From 340a7188e712401293986e92747936d707e52bcf Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Mon, 29 Jul 2019 13:44:30 -0700 Subject: [PATCH 1/3] Fix binding of jsdoc typedefs with no in-comment name attached to an expression statement --- src/compiler/binder.ts | 27 +++-- src/compiler/types.ts | 6 +- src/compiler/utilities.ts | 5 +- .../reference/api/tsserverlibrary.d.ts | 32 ++--- tests/baselines/reference/api/typescript.d.ts | 32 ++--- ...checkJsdocTypeTagOnObjectProperty1.symbols | 14 +-- .../checkObjectDefineProperty.symbols | 26 ++--- .../checkOtherObjectAssignProperty.symbols | 26 ++--- .../constructorFunctionsStrict.symbols | 6 +- .../contextualTypedSpecialAssignment.symbols | 8 +- ...tDefaultExportWithStaticAssignment.symbols | 6 +- ...nmentDefineProperrtyPotentialMerge.symbols | 8 +- .../reference/enumMergeWithExpando.symbols | 22 ++-- .../jsContainerMergeTsDeclaration2.symbols | 6 +- .../reference/jsEnumCrossFileExport.symbols | 89 ++++++++++++++ .../reference/jsEnumCrossFileExport.types | 109 ++++++++++++++++++ .../jsdocTemplateConstructorFunction.symbols | 6 +- .../jsdocTemplateConstructorFunction2.symbols | 6 +- .../jsdocTypeFromChainedAssignment.symbols | 20 ++-- .../misspelledJsDocTypedefTags.symbols | 4 +- ...xportWithExportPropertyAssignment4.symbols | 10 +- .../reference/targetTypeTest1.errors.txt | 8 +- .../reference/targetTypeTest1.symbols | 2 - .../reference/typeFromJSInitializer.symbols | 26 ++--- .../typeFromPropertyAssignment10.symbols | 70 +++++------ .../typeFromPropertyAssignment17.symbols | 10 +- .../typeFromPropertyAssignment25.symbols | 12 +- .../typeFromPropertyAssignment26.symbols | 10 +- .../typeFromPropertyAssignment29.symbols | 44 +++---- .../typeFromPropertyAssignment31.symbols | 44 +++---- .../typeFromPropertyAssignment32.symbols | 44 +++---- .../typeFromPropertyAssignment33.symbols | 44 +++---- .../typeFromPropertyAssignment34.symbols | 20 ++-- .../typeFromPropertyAssignment6.symbols | 8 +- .../typeFromPropertyAssignment9.symbols | 102 ++++++++-------- ...peFromPropertyAssignmentWithExport.symbols | 6 +- tests/cases/compiler/jsEnumCrossFileExport.ts | 43 +++++++ 37 files changed, 611 insertions(+), 350 deletions(-) create mode 100644 tests/baselines/reference/jsEnumCrossFileExport.symbols create mode 100644 tests/baselines/reference/jsEnumCrossFileExport.types create mode 100644 tests/cases/compiler/jsEnumCrossFileExport.ts diff --git a/src/compiler/binder.ts b/src/compiler/binder.ts index d18ab45a3472c..4122af221c1bd 100644 --- a/src/compiler/binder.ts +++ b/src/compiler/binder.ts @@ -490,11 +490,11 @@ namespace ts { // and should never be merged directly with other augmentation, and the latter case would be possible if automatic merge is allowed. if (isJSDocTypeAlias(node)) Debug.assert(isInJSFile(node)); // We shouldn't add symbols for JSDoc nodes if not in a JS file. if ((!isAmbientModule(node) && (hasExportModifier || container.flags & NodeFlags.ExportContext)) || isJSDocTypeAlias(node)) { - if (hasModifier(node, ModifierFlags.Default) && !getDeclarationName(node)) { + if (!container.locals || (hasModifier(node, ModifierFlags.Default) && !getDeclarationName(node))) { return declareSymbol(container.symbol.exports!, container.symbol, node, symbolFlags, symbolExcludes); // No local symbol for an unnamed default! } const exportKind = symbolFlags & SymbolFlags.Value ? SymbolFlags.ExportValue : 0; - const local = declareSymbol(container.locals!, /*parent*/ undefined, node, exportKind, symbolExcludes); + const local = declareSymbol(container.locals, /*parent*/ undefined, node, exportKind, symbolExcludes); local.exportSymbol = declareSymbol(container.symbol.exports!, container.symbol, node, symbolFlags, symbolExcludes); node.localSymbol = local; return local; @@ -1806,7 +1806,16 @@ namespace ts { currentFlow = { flags: FlowFlags.Start }; parent = typeAlias; bind(typeAlias.typeExpression); - if (isJSDocEnumTag(typeAlias) || !typeAlias.fullName || typeAlias.fullName.kind === SyntaxKind.Identifier) { + const declName = getNameOfDeclaration(typeAlias); + if ((isJSDocEnumTag(typeAlias) || !typeAlias.fullName) && declName && isPropertyAccessEntityNameExpression(declName.parent)) { + // typdef anchored to an A.B.C assignment - we need to bind into B's namespace under name C + bindPotentiallyMissingNamespaces(file.symbol, declName.parent, getIsTopLevelNamespaceishAssignment(declName.parent), !!findAncestor(declName, d => isPropertyAccessExpression(d) && d.name.escapedText === "prototype")); + const oldContainer = container; + container = isPropertyAccessExpression(declName.parent.expression) ? declName.parent.expression.name : declName.parent.expression; + declareModuleMember(typeAlias, SymbolFlags.TypeAlias, SymbolFlags.TypeAliasExcludes); + container = oldContainer; + } + else if (isJSDocEnumTag(typeAlias) || !typeAlias.fullName || typeAlias.fullName.kind === SyntaxKind.Identifier) { parent = typeAlias.parent; bindBlockScopedDeclaration(typeAlias, SymbolFlags.TypeAlias, SymbolFlags.TypeAliasExcludes); } @@ -2607,7 +2616,7 @@ namespace ts { } function bindPotentiallyMissingNamespaces(namespaceSymbol: Symbol | undefined, entityName: EntityNameExpression, isToplevel: boolean, isPrototypeProperty: boolean) { - if (isToplevel && !isPrototypeProperty && (!namespaceSymbol || !(namespaceSymbol.flags & SymbolFlags.Namespace))) { + if (isToplevel && !isPrototypeProperty) { // make symbols or add declarations for intermediate containers const flags = SymbolFlags.Module | SymbolFlags.Assignment; const excludeFlags = SymbolFlags.ValueModuleExcludes & ~SymbolFlags.Assignment; @@ -2642,11 +2651,15 @@ namespace ts { declareSymbol(symbolTable, namespaceSymbol, declaration, includes | SymbolFlags.Assignment, excludes & ~SymbolFlags.Assignment); } - function bindPropertyAssignment(name: EntityNameExpression, propertyAccess: PropertyAccessEntityNameExpression, isPrototypeProperty: boolean) { - let namespaceSymbol = lookupSymbolForPropertyAccess(name); - const isToplevel = isBinaryExpression(propertyAccess.parent) + function getIsTopLevelNamespaceishAssignment(propertyAccess: PropertyAccessEntityNameExpression) { + return isBinaryExpression(propertyAccess.parent) ? getParentOfBinaryExpression(propertyAccess.parent).parent.kind === SyntaxKind.SourceFile : propertyAccess.parent.parent.kind === SyntaxKind.SourceFile; + } + + function bindPropertyAssignment(name: EntityNameExpression, propertyAccess: PropertyAccessEntityNameExpression, isPrototypeProperty: boolean) { + let namespaceSymbol = lookupSymbolForPropertyAccess(name); + const isToplevel = getIsTopLevelNamespaceishAssignment(propertyAccess); namespaceSymbol = bindPotentiallyMissingNamespaces(namespaceSymbol, propertyAccess.expression, isToplevel, isPrototypeProperty); bindPotentiallyNewExpandoMemberToNamespace(propertyAccess, namespaceSymbol, isPrototypeProperty); } diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 099f7705f8472..ef09c48bdfca2 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -3661,8 +3661,8 @@ namespace ts { Enum = RegularEnum | ConstEnum, Variable = FunctionScopedVariable | BlockScopedVariable, - Value = Variable | Property | EnumMember | ObjectLiteral | Function | Class | Enum | ValueModule | Method | GetAccessor | SetAccessor | Assignment, - Type = Class | Interface | Enum | EnumMember | TypeLiteral | TypeParameter | TypeAlias | Assignment, + Value = Variable | Property | EnumMember | ObjectLiteral | Function | Class | Enum | ValueModule | Method | GetAccessor | SetAccessor, + Type = Class | Interface | Enum | EnumMember | TypeLiteral | TypeParameter | TypeAlias, Namespace = ValueModule | NamespaceModule | Enum, Module = ValueModule | NamespaceModule, Accessor = GetAccessor | SetAccessor, @@ -3683,7 +3683,7 @@ namespace ts { InterfaceExcludes = Type & ~(Interface | Class), RegularEnumExcludes = (Value | Type) & ~(RegularEnum | ValueModule), // regular enums merge only with regular enums and modules ConstEnumExcludes = (Value | Type) & ~ConstEnum, // const enums merge only with const enums - ValueModuleExcludes = Value & ~(Function | Class | RegularEnum | ValueModule | Assignment), + ValueModuleExcludes = Value & ~(Function | Class | RegularEnum | ValueModule), NamespaceModuleExcludes = 0, MethodExcludes = Value & ~Method, GetAccessorExcludes = Value & ~SetAccessor, diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index d13e12a6f1900..01a14c9173c2d 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -5108,7 +5108,10 @@ namespace ts { } break; case SyntaxKind.ExpressionStatement: - const expr = hostNode.expression; + let expr = hostNode.expression; + if (expr.kind === SyntaxKind.BinaryExpression && (expr as BinaryExpression).operatorToken.kind === SyntaxKind.EqualsToken) { + expr = (expr as BinaryExpression).left; + } switch (expr.kind) { case SyntaxKind.PropertyAccessExpression: return (expr as PropertyAccessExpression).name; diff --git a/tests/baselines/reference/api/tsserverlibrary.d.ts b/tests/baselines/reference/api/tsserverlibrary.d.ts index d73cbab6b5f58..e39841dc2a352 100644 --- a/tests/baselines/reference/api/tsserverlibrary.d.ts +++ b/tests/baselines/reference/api/tsserverlibrary.d.ts @@ -2127,28 +2127,28 @@ declare namespace ts { ModuleExports = 134217728, Enum = 384, Variable = 3, - Value = 67220415, - Type = 67897832, + Value = 111551, + Type = 788968, Namespace = 1920, Module = 1536, Accessor = 98304, - FunctionScopedVariableExcludes = 67220414, - BlockScopedVariableExcludes = 67220415, - ParameterExcludes = 67220415, + FunctionScopedVariableExcludes = 111550, + BlockScopedVariableExcludes = 111551, + ParameterExcludes = 111551, PropertyExcludes = 0, - EnumMemberExcludes = 68008959, - FunctionExcludes = 67219887, - ClassExcludes = 68008383, - InterfaceExcludes = 67897736, - RegularEnumExcludes = 68008191, - ConstEnumExcludes = 68008831, + EnumMemberExcludes = 900095, + FunctionExcludes = 111023, + ClassExcludes = 899519, + InterfaceExcludes = 788872, + RegularEnumExcludes = 899327, + ConstEnumExcludes = 899967, ValueModuleExcludes = 110735, NamespaceModuleExcludes = 0, - MethodExcludes = 67212223, - GetAccessorExcludes = 67154879, - SetAccessorExcludes = 67187647, - TypeParameterExcludes = 67635688, - TypeAliasExcludes = 67897832, + MethodExcludes = 103359, + GetAccessorExcludes = 46015, + SetAccessorExcludes = 78783, + TypeParameterExcludes = 526824, + TypeAliasExcludes = 788968, AliasExcludes = 2097152, ModuleMember = 2623475, ExportHasLocal = 944, diff --git a/tests/baselines/reference/api/typescript.d.ts b/tests/baselines/reference/api/typescript.d.ts index 1bb693c084531..65d67e175cba8 100644 --- a/tests/baselines/reference/api/typescript.d.ts +++ b/tests/baselines/reference/api/typescript.d.ts @@ -2127,28 +2127,28 @@ declare namespace ts { ModuleExports = 134217728, Enum = 384, Variable = 3, - Value = 67220415, - Type = 67897832, + Value = 111551, + Type = 788968, Namespace = 1920, Module = 1536, Accessor = 98304, - FunctionScopedVariableExcludes = 67220414, - BlockScopedVariableExcludes = 67220415, - ParameterExcludes = 67220415, + FunctionScopedVariableExcludes = 111550, + BlockScopedVariableExcludes = 111551, + ParameterExcludes = 111551, PropertyExcludes = 0, - EnumMemberExcludes = 68008959, - FunctionExcludes = 67219887, - ClassExcludes = 68008383, - InterfaceExcludes = 67897736, - RegularEnumExcludes = 68008191, - ConstEnumExcludes = 68008831, + EnumMemberExcludes = 900095, + FunctionExcludes = 111023, + ClassExcludes = 899519, + InterfaceExcludes = 788872, + RegularEnumExcludes = 899327, + ConstEnumExcludes = 899967, ValueModuleExcludes = 110735, NamespaceModuleExcludes = 0, - MethodExcludes = 67212223, - GetAccessorExcludes = 67154879, - SetAccessorExcludes = 67187647, - TypeParameterExcludes = 67635688, - TypeAliasExcludes = 67897832, + MethodExcludes = 103359, + GetAccessorExcludes = 46015, + SetAccessorExcludes = 78783, + TypeParameterExcludes = 526824, + TypeAliasExcludes = 788968, AliasExcludes = 2097152, ModuleMember = 2623475, ExportHasLocal = 944, diff --git a/tests/baselines/reference/checkJsdocTypeTagOnObjectProperty1.symbols b/tests/baselines/reference/checkJsdocTypeTagOnObjectProperty1.symbols index 68693872a4b7f..b2e22ae924a95 100644 --- a/tests/baselines/reference/checkJsdocTypeTagOnObjectProperty1.symbols +++ b/tests/baselines/reference/checkJsdocTypeTagOnObjectProperty1.symbols @@ -4,7 +4,7 @@ var lol = "hello Lol" >lol : Symbol(lol, Decl(0.js, 1, 3)) const obj = { ->obj : Symbol(obj, Decl(0.js, 2, 5), Decl(0.js, 17, 1)) +>obj : Symbol(obj, Decl(0.js, 2, 5), Decl(0.js, 17, 1), Decl(0.js, 19, 7), Decl(0.js, 21, 23)) /** @type {string|undefined} */ foo: undefined, @@ -40,31 +40,31 @@ const obj = { } obj.foo = 'string' >obj.foo : Symbol(foo, Decl(0.js, 2, 13)) ->obj : Symbol(obj, Decl(0.js, 2, 5), Decl(0.js, 17, 1)) +>obj : Symbol(obj, Decl(0.js, 2, 5), Decl(0.js, 17, 1), Decl(0.js, 19, 7), Decl(0.js, 21, 23)) >foo : Symbol(foo, Decl(0.js, 2, 13)) obj.lol >obj.lol : Symbol(lol, Decl(0.js, 10, 4)) ->obj : Symbol(obj, Decl(0.js, 2, 5), Decl(0.js, 17, 1)) +>obj : Symbol(obj, Decl(0.js, 2, 5), Decl(0.js, 17, 1), Decl(0.js, 19, 7), Decl(0.js, 21, 23)) >lol : Symbol(lol, Decl(0.js, 10, 4)) obj.bar = undefined; >obj.bar : Symbol(bar, Decl(0.js, 4, 17)) ->obj : Symbol(obj, Decl(0.js, 2, 5), Decl(0.js, 17, 1)) +>obj : Symbol(obj, Decl(0.js, 2, 5), Decl(0.js, 17, 1), Decl(0.js, 19, 7), Decl(0.js, 21, 23)) >bar : Symbol(bar, Decl(0.js, 4, 17)) >undefined : Symbol(undefined) var k = obj.method1(0); >k : Symbol(k, Decl(0.js, 21, 3)) >obj.method1 : Symbol(method1, Decl(0.js, 6, 12)) ->obj : Symbol(obj, Decl(0.js, 2, 5), Decl(0.js, 17, 1)) +>obj : Symbol(obj, Decl(0.js, 2, 5), Decl(0.js, 17, 1), Decl(0.js, 19, 7), Decl(0.js, 21, 23)) >method1 : Symbol(method1, Decl(0.js, 6, 12)) obj.bar1 = "42"; ->obj : Symbol(obj, Decl(0.js, 2, 5), Decl(0.js, 17, 1)) +>obj : Symbol(obj, Decl(0.js, 2, 5), Decl(0.js, 17, 1), Decl(0.js, 19, 7), Decl(0.js, 21, 23)) obj.arrowFunc(0); >obj.arrowFunc : Symbol(arrowFunc, Decl(0.js, 14, 20)) ->obj : Symbol(obj, Decl(0.js, 2, 5), Decl(0.js, 17, 1)) +>obj : Symbol(obj, Decl(0.js, 2, 5), Decl(0.js, 17, 1), Decl(0.js, 19, 7), Decl(0.js, 21, 23)) >arrowFunc : Symbol(arrowFunc, Decl(0.js, 14, 20)) diff --git a/tests/baselines/reference/checkObjectDefineProperty.symbols b/tests/baselines/reference/checkObjectDefineProperty.symbols index 28512d018a427..6b746640af88e 100644 --- a/tests/baselines/reference/checkObjectDefineProperty.symbols +++ b/tests/baselines/reference/checkObjectDefineProperty.symbols @@ -70,13 +70,13 @@ x.middleInit = "R"; // should also fail === tests/cases/conformance/jsdoc/index.js === const x = {}; ->x : Symbol(x, Decl(index.js, 0, 5), Decl(index.js, 1, 22)) +>x : Symbol(x, Decl(index.js, 0, 5), Decl(index.js, 1, 22), Decl(index.js, 2, 22), Decl(index.js, 3, 22), Decl(index.js, 4, 22) ... and 2 more) Object.defineProperty(x, "name", { value: "Charles", writable: true }); >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->x : Symbol(x, Decl(index.js, 0, 5), Decl(index.js, 1, 22)) +>x : Symbol(x, Decl(index.js, 0, 5), Decl(index.js, 1, 22), Decl(index.js, 2, 22), Decl(index.js, 3, 22), Decl(index.js, 4, 22) ... and 2 more) >"name" : Symbol(x.name, Decl(index.js, 0, 13)) >value : Symbol(value, Decl(index.js, 1, 34)) >writable : Symbol(writable, Decl(index.js, 1, 52)) @@ -85,7 +85,7 @@ Object.defineProperty(x, "middleInit", { value: "H" }); >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->x : Symbol(x, Decl(index.js, 0, 5), Decl(index.js, 1, 22)) +>x : Symbol(x, Decl(index.js, 0, 5), Decl(index.js, 1, 22), Decl(index.js, 2, 22), Decl(index.js, 3, 22), Decl(index.js, 4, 22) ... and 2 more) >"middleInit" : Symbol(x.middleInit, Decl(index.js, 1, 71)) >value : Symbol(value, Decl(index.js, 2, 40)) @@ -93,7 +93,7 @@ Object.defineProperty(x, "lastName", { value: "Smith", writable: false }); >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->x : Symbol(x, Decl(index.js, 0, 5), Decl(index.js, 1, 22)) +>x : Symbol(x, Decl(index.js, 0, 5), Decl(index.js, 1, 22), Decl(index.js, 2, 22), Decl(index.js, 3, 22), Decl(index.js, 4, 22) ... and 2 more) >"lastName" : Symbol(x.lastName, Decl(index.js, 2, 55)) >value : Symbol(value, Decl(index.js, 3, 38)) >writable : Symbol(writable, Decl(index.js, 3, 54)) @@ -102,7 +102,7 @@ Object.defineProperty(x, "zip", { get() { return 98122 }, set(_) { /*ignore*/ } >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->x : Symbol(x, Decl(index.js, 0, 5), Decl(index.js, 1, 22)) +>x : Symbol(x, Decl(index.js, 0, 5), Decl(index.js, 1, 22), Decl(index.js, 2, 22), Decl(index.js, 3, 22), Decl(index.js, 4, 22) ... and 2 more) >"zip" : Symbol(x.zip, Decl(index.js, 3, 74)) >get : Symbol(get, Decl(index.js, 4, 33)) >set : Symbol(set, Decl(index.js, 4, 57)) @@ -112,7 +112,7 @@ Object.defineProperty(x, "houseNumber", { get() { return 21.75 } }); >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->x : Symbol(x, Decl(index.js, 0, 5), Decl(index.js, 1, 22)) +>x : Symbol(x, Decl(index.js, 0, 5), Decl(index.js, 1, 22), Decl(index.js, 2, 22), Decl(index.js, 3, 22), Decl(index.js, 4, 22) ... and 2 more) >"houseNumber" : Symbol(x.houseNumber, Decl(index.js, 4, 83)) >get : Symbol(get, Decl(index.js, 5, 41)) @@ -120,7 +120,7 @@ Object.defineProperty(x, "zipStr", { >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->x : Symbol(x, Decl(index.js, 0, 5), Decl(index.js, 1, 22)) +>x : Symbol(x, Decl(index.js, 0, 5), Decl(index.js, 1, 22), Decl(index.js, 2, 22), Decl(index.js, 3, 22), Decl(index.js, 4, 22) ... and 2 more) >"zipStr" : Symbol(x.zipStr, Decl(index.js, 5, 68)) /** @param {string} str */ @@ -147,7 +147,7 @@ function takeName(named) { return named.name; } takeName(x); >takeName : Symbol(takeName, Decl(index.js, 11, 3)) ->x : Symbol(x, Decl(index.js, 0, 5), Decl(index.js, 1, 22)) +>x : Symbol(x, Decl(index.js, 0, 5), Decl(index.js, 1, 22), Decl(index.js, 2, 22), Decl(index.js, 3, 22), Decl(index.js, 4, 22) ... and 2 more) /** * @type {number} @@ -155,7 +155,7 @@ takeName(x); var a = x.zip; >a : Symbol(a, Decl(index.js, 22, 3)) >x.zip : Symbol(x.zip, Decl(index.js, 3, 74)) ->x : Symbol(x, Decl(index.js, 0, 5), Decl(index.js, 1, 22)) +>x : Symbol(x, Decl(index.js, 0, 5), Decl(index.js, 1, 22), Decl(index.js, 2, 22), Decl(index.js, 3, 22), Decl(index.js, 4, 22) ... and 2 more) >zip : Symbol(x.zip, Decl(index.js, 3, 74)) /** @@ -164,17 +164,17 @@ var a = x.zip; var b = x.houseNumber; >b : Symbol(b, Decl(index.js, 27, 3)) >x.houseNumber : Symbol(x.houseNumber, Decl(index.js, 4, 83)) ->x : Symbol(x, Decl(index.js, 0, 5), Decl(index.js, 1, 22)) +>x : Symbol(x, Decl(index.js, 0, 5), Decl(index.js, 1, 22), Decl(index.js, 2, 22), Decl(index.js, 3, 22), Decl(index.js, 4, 22) ... and 2 more) >houseNumber : Symbol(x.houseNumber, Decl(index.js, 4, 83)) const returnExemplar = () => x; >returnExemplar : Symbol(returnExemplar, Decl(index.js, 29, 5)) ->x : Symbol(x, Decl(index.js, 0, 5), Decl(index.js, 1, 22)) +>x : Symbol(x, Decl(index.js, 0, 5), Decl(index.js, 1, 22), Decl(index.js, 2, 22), Decl(index.js, 3, 22), Decl(index.js, 4, 22) ... and 2 more) const needsExemplar = (_ = x) => void 0; >needsExemplar : Symbol(needsExemplar, Decl(index.js, 30, 5)) >_ : Symbol(_, Decl(index.js, 30, 23)) ->x : Symbol(x, Decl(index.js, 0, 5), Decl(index.js, 1, 22)) +>x : Symbol(x, Decl(index.js, 0, 5), Decl(index.js, 1, 22), Decl(index.js, 2, 22), Decl(index.js, 3, 22), Decl(index.js, 4, 22) ... and 2 more) const expected = /** @type {{name: string, readonly middleInit: string, readonly lastName: string, zip: number, readonly houseNumber: number, zipStr: string}} */(/** @type {*} */(null)); >expected : Symbol(expected, Decl(index.js, 32, 5)) @@ -199,5 +199,5 @@ module.exports = x; >module.exports : Symbol("tests/cases/conformance/jsdoc/index", Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 41, 48)) >exports : Symbol(export=, Decl(index.js, 41, 48)) ->x : Symbol(x, Decl(index.js, 0, 5), Decl(index.js, 1, 22)) +>x : Symbol(x, Decl(index.js, 0, 5), Decl(index.js, 1, 22), Decl(index.js, 2, 22), Decl(index.js, 3, 22), Decl(index.js, 4, 22) ... and 2 more) diff --git a/tests/baselines/reference/checkOtherObjectAssignProperty.symbols b/tests/baselines/reference/checkOtherObjectAssignProperty.symbols index f72bf16a3b0f4..33e8560261950 100644 --- a/tests/baselines/reference/checkOtherObjectAssignProperty.symbols +++ b/tests/baselines/reference/checkOtherObjectAssignProperty.symbols @@ -1,60 +1,60 @@ === tests/cases/conformance/jsdoc/importer.js === const mod = require("./mod1"); ->mod : Symbol(mod, Decl(importer.js, 0, 5), Decl(importer.js, 6, 9)) +>mod : Symbol(mod, Decl(importer.js, 0, 5), Decl(importer.js, 6, 9), Decl(importer.js, 9, 14), Decl(importer.js, 10, 14), Decl(importer.js, 11, 13) ... and 2 more) >require : Symbol(require) >"./mod1" : Symbol("tests/cases/conformance/jsdoc/mod1", Decl(mod1.js, 0, 0)) mod.thing; >mod.thing : Symbol(thing, Decl(mod1.js, 0, 42)) ->mod : Symbol(mod, Decl(importer.js, 0, 5), Decl(importer.js, 6, 9)) +>mod : Symbol(mod, Decl(importer.js, 0, 5), Decl(importer.js, 6, 9), Decl(importer.js, 9, 14), Decl(importer.js, 10, 14), Decl(importer.js, 11, 13) ... and 2 more) >thing : Symbol(thing, Decl(mod1.js, 0, 42)) mod.other; ->mod : Symbol(mod, Decl(importer.js, 0, 5), Decl(importer.js, 6, 9)) +>mod : Symbol(mod, Decl(importer.js, 0, 5), Decl(importer.js, 6, 9), Decl(importer.js, 9, 14), Decl(importer.js, 10, 14), Decl(importer.js, 11, 13) ... and 2 more) mod.prop; ->mod : Symbol(mod, Decl(importer.js, 0, 5), Decl(importer.js, 6, 9)) +>mod : Symbol(mod, Decl(importer.js, 0, 5), Decl(importer.js, 6, 9), Decl(importer.js, 9, 14), Decl(importer.js, 10, 14), Decl(importer.js, 11, 13) ... and 2 more) mod.bad1; >mod.bad1 : Symbol(bad1, Decl(mod1.js, 10, 72)) ->mod : Symbol(mod, Decl(importer.js, 0, 5), Decl(importer.js, 6, 9)) +>mod : Symbol(mod, Decl(importer.js, 0, 5), Decl(importer.js, 6, 9), Decl(importer.js, 9, 14), Decl(importer.js, 10, 14), Decl(importer.js, 11, 13) ... and 2 more) >bad1 : Symbol(bad1, Decl(mod1.js, 10, 72)) mod.bad2; >mod.bad2 : Symbol(bad2, Decl(mod1.js, 13, 44)) ->mod : Symbol(mod, Decl(importer.js, 0, 5), Decl(importer.js, 6, 9)) +>mod : Symbol(mod, Decl(importer.js, 0, 5), Decl(importer.js, 6, 9), Decl(importer.js, 9, 14), Decl(importer.js, 10, 14), Decl(importer.js, 11, 13) ... and 2 more) >bad2 : Symbol(bad2, Decl(mod1.js, 13, 44)) mod.bad3; >mod.bad3 : Symbol(bad3, Decl(mod1.js, 14, 77)) ->mod : Symbol(mod, Decl(importer.js, 0, 5), Decl(importer.js, 6, 9)) +>mod : Symbol(mod, Decl(importer.js, 0, 5), Decl(importer.js, 6, 9), Decl(importer.js, 9, 14), Decl(importer.js, 10, 14), Decl(importer.js, 11, 13) ... and 2 more) >bad3 : Symbol(bad3, Decl(mod1.js, 14, 77)) mod.thing = 0; >mod.thing : Symbol(thing, Decl(mod1.js, 0, 42)) ->mod : Symbol(mod, Decl(importer.js, 0, 5), Decl(importer.js, 6, 9)) +>mod : Symbol(mod, Decl(importer.js, 0, 5), Decl(importer.js, 6, 9), Decl(importer.js, 9, 14), Decl(importer.js, 10, 14), Decl(importer.js, 11, 13) ... and 2 more) >thing : Symbol(thing, Decl(mod1.js, 0, 42)) mod.other = 0; ->mod : Symbol(mod, Decl(importer.js, 0, 5), Decl(importer.js, 6, 9)) +>mod : Symbol(mod, Decl(importer.js, 0, 5), Decl(importer.js, 6, 9), Decl(importer.js, 9, 14), Decl(importer.js, 10, 14), Decl(importer.js, 11, 13) ... and 2 more) mod.prop = 0; ->mod : Symbol(mod, Decl(importer.js, 0, 5), Decl(importer.js, 6, 9)) +>mod : Symbol(mod, Decl(importer.js, 0, 5), Decl(importer.js, 6, 9), Decl(importer.js, 9, 14), Decl(importer.js, 10, 14), Decl(importer.js, 11, 13) ... and 2 more) mod.bad1 = 0; >mod.bad1 : Symbol(bad1, Decl(mod1.js, 10, 72)) ->mod : Symbol(mod, Decl(importer.js, 0, 5), Decl(importer.js, 6, 9)) +>mod : Symbol(mod, Decl(importer.js, 0, 5), Decl(importer.js, 6, 9), Decl(importer.js, 9, 14), Decl(importer.js, 10, 14), Decl(importer.js, 11, 13) ... and 2 more) >bad1 : Symbol(bad1, Decl(mod1.js, 10, 72)) mod.bad2 = 0; >mod.bad2 : Symbol(bad2, Decl(mod1.js, 13, 44)) ->mod : Symbol(mod, Decl(importer.js, 0, 5), Decl(importer.js, 6, 9)) +>mod : Symbol(mod, Decl(importer.js, 0, 5), Decl(importer.js, 6, 9), Decl(importer.js, 9, 14), Decl(importer.js, 10, 14), Decl(importer.js, 11, 13) ... and 2 more) >bad2 : Symbol(bad2, Decl(mod1.js, 13, 44)) mod.bad3 = 0; >mod.bad3 : Symbol(bad3, Decl(mod1.js, 14, 77)) ->mod : Symbol(mod, Decl(importer.js, 0, 5), Decl(importer.js, 6, 9)) +>mod : Symbol(mod, Decl(importer.js, 0, 5), Decl(importer.js, 6, 9), Decl(importer.js, 9, 14), Decl(importer.js, 10, 14), Decl(importer.js, 11, 13) ... and 2 more) >bad3 : Symbol(bad3, Decl(mod1.js, 14, 77)) === tests/cases/conformance/jsdoc/mod1.js === diff --git a/tests/baselines/reference/constructorFunctionsStrict.symbols b/tests/baselines/reference/constructorFunctionsStrict.symbols index 3954e2ce1e62c..74727d8088ae2 100644 --- a/tests/baselines/reference/constructorFunctionsStrict.symbols +++ b/tests/baselines/reference/constructorFunctionsStrict.symbols @@ -20,18 +20,18 @@ C.prototype.m = function() { >y : Symbol(C.y, Decl(a.js, 4, 28)) } var c = new C(1) ->c : Symbol(c, Decl(a.js, 7, 3), Decl(a.js, 7, 16)) +>c : Symbol(c, Decl(a.js, 7, 3), Decl(a.js, 7, 16), Decl(a.js, 8, 15)) >C : Symbol(C, Decl(a.js, 0, 0)) c.x = undefined // should error >c.x : Symbol(C.x, Decl(a.js, 1, 15)) ->c : Symbol(c, Decl(a.js, 7, 3), Decl(a.js, 7, 16)) +>c : Symbol(c, Decl(a.js, 7, 3), Decl(a.js, 7, 16), Decl(a.js, 8, 15)) >x : Symbol(C.x, Decl(a.js, 1, 15)) >undefined : Symbol(undefined) c.y = undefined // ok >c.y : Symbol(C.y, Decl(a.js, 4, 28)) ->c : Symbol(c, Decl(a.js, 7, 3), Decl(a.js, 7, 16)) +>c : Symbol(c, Decl(a.js, 7, 3), Decl(a.js, 7, 16), Decl(a.js, 8, 15)) >y : Symbol(C.y, Decl(a.js, 4, 28)) >undefined : Symbol(undefined) diff --git a/tests/baselines/reference/contextualTypedSpecialAssignment.symbols b/tests/baselines/reference/contextualTypedSpecialAssignment.symbols index 01ba1d6ba79cd..c185640d89700 100644 --- a/tests/baselines/reference/contextualTypedSpecialAssignment.symbols +++ b/tests/baselines/reference/contextualTypedSpecialAssignment.symbols @@ -6,12 +6,12 @@ // property assignment var ns = {} ->ns : Symbol(ns, Decl(test.js, 6, 3), Decl(test.js, 6, 11)) +>ns : Symbol(ns, Decl(test.js, 6, 3), Decl(test.js, 6, 11), Decl(test.js, 11, 1)) /** @type {DoneStatus} */ ns.x = { >ns.x : Symbol(ns.x, Decl(test.js, 6, 11), Decl(test.js, 11, 1)) ->ns : Symbol(ns, Decl(test.js, 6, 3), Decl(test.js, 6, 11)) +>ns : Symbol(ns, Decl(test.js, 6, 3), Decl(test.js, 6, 11), Decl(test.js, 11, 1)) >x : Symbol(ns.x, Decl(test.js, 6, 11), Decl(test.js, 11, 1)) status: 'done', @@ -24,7 +24,7 @@ ns.x = { ns.x = { >ns.x : Symbol(ns.x, Decl(test.js, 6, 11), Decl(test.js, 11, 1)) ->ns : Symbol(ns, Decl(test.js, 6, 3), Decl(test.js, 6, 11)) +>ns : Symbol(ns, Decl(test.js, 6, 3), Decl(test.js, 6, 11), Decl(test.js, 11, 1)) >x : Symbol(ns.x, Decl(test.js, 6, 11), Decl(test.js, 11, 1)) status: 'done', @@ -36,7 +36,7 @@ ns.x = { } ns.x >ns.x : Symbol(ns.x, Decl(test.js, 6, 11), Decl(test.js, 11, 1)) ->ns : Symbol(ns, Decl(test.js, 6, 3), Decl(test.js, 6, 11)) +>ns : Symbol(ns, Decl(test.js, 6, 3), Decl(test.js, 6, 11), Decl(test.js, 11, 1)) >x : Symbol(ns.x, Decl(test.js, 6, 11), Decl(test.js, 11, 1)) diff --git a/tests/baselines/reference/declarationEmitDefaultExportWithStaticAssignment.symbols b/tests/baselines/reference/declarationEmitDefaultExportWithStaticAssignment.symbols index f65952c18d7dd..7926ba4200814 100644 --- a/tests/baselines/reference/declarationEmitDefaultExportWithStaticAssignment.symbols +++ b/tests/baselines/reference/declarationEmitDefaultExportWithStaticAssignment.symbols @@ -52,20 +52,20 @@ function B() { } >B : Symbol(B, Decl(index4.ts, 0, 17)) export function C() { ->C : Symbol(C, Decl(index4.ts, 2, 16), Decl(index4.ts, 6, 1)) +>C : Symbol(C, Decl(index4.ts, 2, 16), Decl(index4.ts, 6, 1), Decl(index4.ts, 8, 8)) return null; } C.A = A; >C.A : Symbol(C.A, Decl(index4.ts, 6, 1)) ->C : Symbol(C, Decl(index4.ts, 2, 16), Decl(index4.ts, 6, 1)) +>C : Symbol(C, Decl(index4.ts, 2, 16), Decl(index4.ts, 6, 1), Decl(index4.ts, 8, 8)) >A : Symbol(C.A, Decl(index4.ts, 6, 1)) >A : Symbol(A, Decl(index4.ts, 0, 0)) C.B = B; >C.B : Symbol(C.B, Decl(index4.ts, 8, 8)) ->C : Symbol(C, Decl(index4.ts, 2, 16), Decl(index4.ts, 6, 1)) +>C : Symbol(C, Decl(index4.ts, 2, 16), Decl(index4.ts, 6, 1), Decl(index4.ts, 8, 8)) >B : Symbol(C.B, Decl(index4.ts, 8, 8)) >B : Symbol(B, Decl(index4.ts, 0, 17)) diff --git a/tests/baselines/reference/ensureNoCrashExportAssignmentDefineProperrtyPotentialMerge.symbols b/tests/baselines/reference/ensureNoCrashExportAssignmentDefineProperrtyPotentialMerge.symbols index 9d6f464619f2e..41ba9b444c78d 100644 --- a/tests/baselines/reference/ensureNoCrashExportAssignmentDefineProperrtyPotentialMerge.symbols +++ b/tests/baselines/reference/ensureNoCrashExportAssignmentDefineProperrtyPotentialMerge.symbols @@ -35,11 +35,11 @@ module.exports = A; === tests/cases/compiler/namespacer.js === const B = {} ->B : Symbol(B, Decl(namespacer.js, 0, 5), Decl(namespacer.js, 0, 12)) +>B : Symbol(B, Decl(namespacer.js, 0, 5), Decl(namespacer.js, 0, 12), Decl(namespacer.js, 2, 22)) B.NS = require("./namespacey"); >B.NS : Symbol(B.NS, Decl(namespacer.js, 0, 12), Decl(namespacer.js, 1, 31)) ->B : Symbol(B, Decl(namespacer.js, 0, 5), Decl(namespacer.js, 0, 12)) +>B : Symbol(B, Decl(namespacer.js, 0, 5), Decl(namespacer.js, 0, 12), Decl(namespacer.js, 2, 22)) >NS : Symbol(B.NS, Decl(namespacer.js, 0, 12), Decl(namespacer.js, 1, 31)) >require : Symbol(require) >"./namespacey" : Symbol("tests/cases/compiler/namespacey", Decl(namespacey.js, 0, 0)) @@ -48,7 +48,7 @@ Object.defineProperty(B, "NS", { value: "why though", writable: true }); >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->B : Symbol(B, Decl(namespacer.js, 0, 5), Decl(namespacer.js, 0, 12)) +>B : Symbol(B, Decl(namespacer.js, 0, 5), Decl(namespacer.js, 0, 12), Decl(namespacer.js, 2, 22)) >"NS" : Symbol(B.NS, Decl(namespacer.js, 0, 12), Decl(namespacer.js, 1, 31)) >value : Symbol(value, Decl(namespacer.js, 2, 32)) >writable : Symbol(writable, Decl(namespacer.js, 2, 53)) @@ -57,5 +57,5 @@ module.exports = B; >module.exports : Symbol("tests/cases/compiler/namespacer", Decl(namespacer.js, 0, 0)) >module : Symbol(export=, Decl(namespacer.js, 2, 72)) >exports : Symbol(export=, Decl(namespacer.js, 2, 72)) ->B : Symbol(B, Decl(namespacer.js, 0, 5), Decl(namespacer.js, 0, 12)) +>B : Symbol(B, Decl(namespacer.js, 0, 5), Decl(namespacer.js, 0, 12), Decl(namespacer.js, 2, 22)) diff --git a/tests/baselines/reference/enumMergeWithExpando.symbols b/tests/baselines/reference/enumMergeWithExpando.symbols index 854bf6b5169ce..829bd63e86d44 100644 --- a/tests/baselines/reference/enumMergeWithExpando.symbols +++ b/tests/baselines/reference/enumMergeWithExpando.symbols @@ -1,31 +1,31 @@ === tests/cases/conformance/salsa/lovefield-ts.d.ts === // bug #27352, crashes from github.com/google/lovefield declare namespace lf { ->lf : Symbol(lf, Decl(lovefield-ts.d.ts, 0, 0), Decl(enums.js, 0, 0), Decl(enums.js, 0, 13)) +>lf : Symbol(lf, Decl(lovefield-ts.d.ts, 0, 0), Decl(enums.js, 0, 0), Decl(enums.js, 0, 13), Decl(enums.js, 1, 18)) export enum Order { ASC, DESC } ->Order : Symbol(Order, Decl(lovefield-ts.d.ts, 1, 22), Decl(enums.js, 0, 0), Decl(enums.js, 1, 3)) +>Order : Symbol(Order, Decl(lovefield-ts.d.ts, 1, 22), Decl(enums.js, 0, 0), Decl(enums.js, 1, 3), Decl(enums.js, 2, 3)) >ASC : Symbol(Order.ASC, Decl(lovefield-ts.d.ts, 2, 23), Decl(enums.js, 1, 18)) >DESC : Symbol(Order.DESC, Decl(lovefield-ts.d.ts, 2, 28), Decl(enums.js, 0, 13)) } === tests/cases/conformance/salsa/enums.js === lf.Order = {} ->lf.Order : Symbol(lf.Order, Decl(lovefield-ts.d.ts, 1, 22), Decl(enums.js, 0, 0), Decl(enums.js, 1, 3)) ->lf : Symbol(lf, Decl(lovefield-ts.d.ts, 0, 0), Decl(enums.js, 0, 0), Decl(enums.js, 0, 13)) ->Order : Symbol(lf.Order, Decl(lovefield-ts.d.ts, 1, 22), Decl(enums.js, 0, 0), Decl(enums.js, 1, 3)) +>lf.Order : Symbol(lf.Order, Decl(lovefield-ts.d.ts, 1, 22), Decl(enums.js, 0, 0), Decl(enums.js, 1, 3), Decl(enums.js, 2, 3)) +>lf : Symbol(lf, Decl(lovefield-ts.d.ts, 0, 0), Decl(enums.js, 0, 0), Decl(enums.js, 0, 13), Decl(enums.js, 1, 18)) +>Order : Symbol(lf.Order, Decl(lovefield-ts.d.ts, 1, 22), Decl(enums.js, 0, 0), Decl(enums.js, 1, 3), Decl(enums.js, 2, 3)) lf.Order.DESC = 0; >lf.Order.DESC : Symbol(lf.Order.DESC, Decl(lovefield-ts.d.ts, 2, 28), Decl(enums.js, 0, 13)) ->lf.Order : Symbol(lf.Order, Decl(lovefield-ts.d.ts, 1, 22), Decl(enums.js, 0, 0), Decl(enums.js, 1, 3)) ->lf : Symbol(lf, Decl(lovefield-ts.d.ts, 0, 0), Decl(enums.js, 0, 0), Decl(enums.js, 0, 13)) ->Order : Symbol(lf.Order, Decl(lovefield-ts.d.ts, 1, 22), Decl(enums.js, 0, 0), Decl(enums.js, 1, 3)) +>lf.Order : Symbol(lf.Order, Decl(lovefield-ts.d.ts, 1, 22), Decl(enums.js, 0, 0), Decl(enums.js, 1, 3), Decl(enums.js, 2, 3)) +>lf : Symbol(lf, Decl(lovefield-ts.d.ts, 0, 0), Decl(enums.js, 0, 0), Decl(enums.js, 0, 13), Decl(enums.js, 1, 18)) +>Order : Symbol(lf.Order, Decl(lovefield-ts.d.ts, 1, 22), Decl(enums.js, 0, 0), Decl(enums.js, 1, 3), Decl(enums.js, 2, 3)) >DESC : Symbol(lf.Order.DESC, Decl(lovefield-ts.d.ts, 2, 28), Decl(enums.js, 0, 13)) lf.Order.ASC = 1; >lf.Order.ASC : Symbol(lf.Order.ASC, Decl(lovefield-ts.d.ts, 2, 23), Decl(enums.js, 1, 18)) ->lf.Order : Symbol(lf.Order, Decl(lovefield-ts.d.ts, 1, 22), Decl(enums.js, 0, 0), Decl(enums.js, 1, 3)) ->lf : Symbol(lf, Decl(lovefield-ts.d.ts, 0, 0), Decl(enums.js, 0, 0), Decl(enums.js, 0, 13)) ->Order : Symbol(lf.Order, Decl(lovefield-ts.d.ts, 1, 22), Decl(enums.js, 0, 0), Decl(enums.js, 1, 3)) +>lf.Order : Symbol(lf.Order, Decl(lovefield-ts.d.ts, 1, 22), Decl(enums.js, 0, 0), Decl(enums.js, 1, 3), Decl(enums.js, 2, 3)) +>lf : Symbol(lf, Decl(lovefield-ts.d.ts, 0, 0), Decl(enums.js, 0, 0), Decl(enums.js, 0, 13), Decl(enums.js, 1, 18)) +>Order : Symbol(lf.Order, Decl(lovefield-ts.d.ts, 1, 22), Decl(enums.js, 0, 0), Decl(enums.js, 1, 3), Decl(enums.js, 2, 3)) >ASC : Symbol(lf.Order.ASC, Decl(lovefield-ts.d.ts, 2, 23), Decl(enums.js, 1, 18)) diff --git a/tests/baselines/reference/jsContainerMergeTsDeclaration2.symbols b/tests/baselines/reference/jsContainerMergeTsDeclaration2.symbols index 4f5f86e8e67a3..fc9bedbeaf48d 100644 --- a/tests/baselines/reference/jsContainerMergeTsDeclaration2.symbols +++ b/tests/baselines/reference/jsContainerMergeTsDeclaration2.symbols @@ -1,6 +1,6 @@ === tests/cases/conformance/salsa/a.d.ts === declare namespace C { ->C : Symbol(C, Decl(a.d.ts, 0, 0), Decl(b.js, 0, 0)) +>C : Symbol(C, Decl(a.d.ts, 0, 0), Decl(b.js, 0, 0), Decl(b.js, 0, 17)) function bar(): void >bar : Symbol(bar, Decl(a.d.ts, 0, 21), Decl(b.js, 0, 17)) @@ -8,11 +8,11 @@ declare namespace C { === tests/cases/conformance/salsa/b.js === C.prototype = {}; >C.prototype : Symbol(C.prototype, Decl(b.js, 0, 0)) ->C : Symbol(C, Decl(a.d.ts, 0, 0), Decl(b.js, 0, 0)) +>C : Symbol(C, Decl(a.d.ts, 0, 0), Decl(b.js, 0, 0), Decl(b.js, 0, 17)) >prototype : Symbol(C.prototype, Decl(b.js, 0, 0)) C.bar = 2; >C.bar : Symbol(C.bar, Decl(a.d.ts, 0, 21), Decl(b.js, 0, 17)) ->C : Symbol(C, Decl(a.d.ts, 0, 0), Decl(b.js, 0, 0)) +>C : Symbol(C, Decl(a.d.ts, 0, 0), Decl(b.js, 0, 0), Decl(b.js, 0, 17)) >bar : Symbol(C.bar, Decl(a.d.ts, 0, 21), Decl(b.js, 0, 17)) diff --git a/tests/baselines/reference/jsEnumCrossFileExport.symbols b/tests/baselines/reference/jsEnumCrossFileExport.symbols new file mode 100644 index 0000000000000..60d2776965231 --- /dev/null +++ b/tests/baselines/reference/jsEnumCrossFileExport.symbols @@ -0,0 +1,89 @@ +=== tests/cases/compiler/enumDef.js === +var Host = {}; +>Host : Symbol(Host, Decl(enumDef.js, 0, 3), Decl(enumDef.js, 0, 14), Decl(enumDef.js, 1, 22), Decl(enumDef.js, 8, 2), Decl(enumDef.js, 1, 22) ... and 2 more) + +Host.UserMetrics = {}; +>Host.UserMetrics : Symbol(Host.UserMetrics, Decl(enumDef.js, 0, 14), Decl(enumDef.js, 3, 5), Decl(enumDef.js, 15, 5), Decl(enumDef.js, 3, 5), Decl(enumDef.js, 10, 26) ... and 1 more) +>Host : Symbol(Host, Decl(enumDef.js, 0, 3), Decl(enumDef.js, 0, 14), Decl(enumDef.js, 1, 22), Decl(enumDef.js, 8, 2), Decl(enumDef.js, 1, 22) ... and 2 more) +>UserMetrics : Symbol(Host.UserMetrics, Decl(enumDef.js, 0, 14), Decl(enumDef.js, 3, 5), Decl(enumDef.js, 15, 5), Decl(enumDef.js, 3, 5), Decl(enumDef.js, 10, 26) ... and 1 more) + +/** @enum {number} */ +Host.UserMetrics.Action = { +>Host.UserMetrics.Action : Symbol(Host.UserMetrics.Action, Decl(enumDef.js, 1, 22), Decl(enumDef.js, 3, 17), Decl(enumDef.js, 2, 4)) +>Host.UserMetrics : Symbol(Host.UserMetrics, Decl(enumDef.js, 0, 14), Decl(enumDef.js, 3, 5), Decl(enumDef.js, 15, 5), Decl(enumDef.js, 3, 5), Decl(enumDef.js, 10, 26) ... and 1 more) +>Host : Symbol(Host, Decl(enumDef.js, 0, 3), Decl(enumDef.js, 0, 14), Decl(enumDef.js, 1, 22), Decl(enumDef.js, 8, 2), Decl(enumDef.js, 1, 22) ... and 2 more) +>UserMetrics : Symbol(Host.UserMetrics, Decl(enumDef.js, 0, 14), Decl(enumDef.js, 3, 5), Decl(enumDef.js, 15, 5), Decl(enumDef.js, 3, 5), Decl(enumDef.js, 10, 26) ... and 1 more) +>Action : Symbol(Host.UserMetrics.Action, Decl(enumDef.js, 1, 22), Decl(enumDef.js, 3, 17), Decl(enumDef.js, 2, 4)) + + WindowDocked: 1, +>WindowDocked : Symbol(WindowDocked, Decl(enumDef.js, 3, 27)) + + WindowUndocked: 2, +>WindowUndocked : Symbol(WindowUndocked, Decl(enumDef.js, 4, 20)) + + ScriptsBreakpointSet: 3, +>ScriptsBreakpointSet : Symbol(ScriptsBreakpointSet, Decl(enumDef.js, 5, 22)) + + TimelineStarted: 4, +>TimelineStarted : Symbol(TimelineStarted, Decl(enumDef.js, 6, 28)) + +}; +/** + * @typedef {string} Host.UserMetrics.Bargh + */ +/** + * @typedef {string} + */ +Host.UserMetrics.Blah = { +>Host.UserMetrics.Blah : Symbol(Host.UserMetrics.Blah, Decl(enumDef.js, 8, 2), Decl(enumDef.js, 15, 17), Decl(enumDef.js, 13, 3)) +>Host.UserMetrics : Symbol(Host.UserMetrics, Decl(enumDef.js, 0, 14), Decl(enumDef.js, 3, 5), Decl(enumDef.js, 15, 5), Decl(enumDef.js, 3, 5), Decl(enumDef.js, 10, 26) ... and 1 more) +>Host : Symbol(Host, Decl(enumDef.js, 0, 3), Decl(enumDef.js, 0, 14), Decl(enumDef.js, 1, 22), Decl(enumDef.js, 8, 2), Decl(enumDef.js, 1, 22) ... and 2 more) +>UserMetrics : Symbol(Host.UserMetrics, Decl(enumDef.js, 0, 14), Decl(enumDef.js, 3, 5), Decl(enumDef.js, 15, 5), Decl(enumDef.js, 3, 5), Decl(enumDef.js, 10, 26) ... and 1 more) +>Blah : Symbol(Host.UserMetrics.Blah, Decl(enumDef.js, 8, 2), Decl(enumDef.js, 15, 17), Decl(enumDef.js, 13, 3)) + + x: 12 +>x : Symbol(x, Decl(enumDef.js, 15, 25)) +} +=== tests/cases/compiler/index.js === +var Other = {}; +>Other : Symbol(Other, Decl(index.js, 0, 3), Decl(index.js, 0, 15)) + +Other.Cls = class { +>Other.Cls : Symbol(Other.Cls, Decl(index.js, 0, 15)) +>Other : Symbol(Other, Decl(index.js, 0, 3), Decl(index.js, 0, 15)) +>Cls : Symbol(Other.Cls, Decl(index.js, 0, 15)) + + /** + * @param {!Host.UserMetrics.Action} p + */ + method(p) {} +>method : Symbol(Cls.method, Decl(index.js, 1, 19)) +>p : Symbol(p, Decl(index.js, 5, 11)) + + usage() { +>usage : Symbol(Cls.usage, Decl(index.js, 5, 16)) + + this.method(Host.UserMetrics.Action.WindowDocked); +>this.method : Symbol(Cls.method, Decl(index.js, 1, 19)) +>this : Symbol(Cls, Decl(index.js, 1, 11)) +>method : Symbol(Cls.method, Decl(index.js, 1, 19)) +>Host.UserMetrics.Action : Symbol(Host.UserMetrics.Action, Decl(enumDef.js, 1, 22), Decl(enumDef.js, 3, 17), Decl(enumDef.js, 2, 4)) +>Host.UserMetrics : Symbol(Host.UserMetrics, Decl(enumDef.js, 0, 14), Decl(enumDef.js, 3, 5), Decl(enumDef.js, 15, 5), Decl(enumDef.js, 3, 5), Decl(enumDef.js, 10, 26) ... and 1 more) +>Host : Symbol(Host, Decl(enumDef.js, 0, 3), Decl(enumDef.js, 0, 14), Decl(enumDef.js, 1, 22), Decl(enumDef.js, 8, 2), Decl(enumDef.js, 1, 22) ... and 2 more) +>UserMetrics : Symbol(Host.UserMetrics, Decl(enumDef.js, 0, 14), Decl(enumDef.js, 3, 5), Decl(enumDef.js, 15, 5), Decl(enumDef.js, 3, 5), Decl(enumDef.js, 10, 26) ... and 1 more) +>Action : Symbol(Host.UserMetrics.Action, Decl(enumDef.js, 1, 22), Decl(enumDef.js, 3, 17), Decl(enumDef.js, 2, 4)) + } +} + +/** + * @type {Host.UserMetrics.Bargh} + */ +var x = "ok"; +>x : Symbol(x, Decl(index.js, 14, 3)) + +/** + * @type {Host.UserMetrics.Blah} + */ +var y = "ok"; +>y : Symbol(y, Decl(index.js, 19, 3)) + diff --git a/tests/baselines/reference/jsEnumCrossFileExport.types b/tests/baselines/reference/jsEnumCrossFileExport.types new file mode 100644 index 0000000000000..24acb348ada67 --- /dev/null +++ b/tests/baselines/reference/jsEnumCrossFileExport.types @@ -0,0 +1,109 @@ +=== tests/cases/compiler/enumDef.js === +var Host = {}; +>Host : typeof Host +>{} : {} + +Host.UserMetrics = {}; +>Host.UserMetrics = {} : typeof Host.UserMetrics +>Host.UserMetrics : typeof Host.UserMetrics +>Host : typeof Host +>UserMetrics : typeof Host.UserMetrics +>{} : {} + +/** @enum {number} */ +Host.UserMetrics.Action = { +>Host.UserMetrics.Action = { WindowDocked: 1, WindowUndocked: 2, ScriptsBreakpointSet: 3, TimelineStarted: 4,} : { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; } +>Host.UserMetrics.Action : error +>Host.UserMetrics : typeof Host.UserMetrics +>Host : typeof Host +>UserMetrics : typeof Host.UserMetrics +>Action : any +>{ WindowDocked: 1, WindowUndocked: 2, ScriptsBreakpointSet: 3, TimelineStarted: 4,} : { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; } + + WindowDocked: 1, +>WindowDocked : number +>1 : 1 + + WindowUndocked: 2, +>WindowUndocked : number +>2 : 2 + + ScriptsBreakpointSet: 3, +>ScriptsBreakpointSet : number +>3 : 3 + + TimelineStarted: 4, +>TimelineStarted : number +>4 : 4 + +}; +/** + * @typedef {string} Host.UserMetrics.Bargh + */ +/** + * @typedef {string} + */ +Host.UserMetrics.Blah = { +>Host.UserMetrics.Blah = { x: 12} : { x: number; } +>Host.UserMetrics.Blah : error +>Host.UserMetrics : typeof Host.UserMetrics +>Host : typeof Host +>UserMetrics : typeof Host.UserMetrics +>Blah : any +>{ x: 12} : { x: number; } + + x: 12 +>x : number +>12 : 12 +} +=== tests/cases/compiler/index.js === +var Other = {}; +>Other : typeof Other +>{} : {} + +Other.Cls = class { +>Other.Cls = class { /** * @param {!Host.UserMetrics.Action} p */ method(p) {} usage() { this.method(Host.UserMetrics.Action.WindowDocked); }} : typeof Cls +>Other.Cls : typeof Cls +>Other : typeof Other +>Cls : typeof Cls +>class { /** * @param {!Host.UserMetrics.Action} p */ method(p) {} usage() { this.method(Host.UserMetrics.Action.WindowDocked); }} : typeof Cls + + /** + * @param {!Host.UserMetrics.Action} p + */ + method(p) {} +>method : (p: number) => void +>p : number + + usage() { +>usage : () => void + + this.method(Host.UserMetrics.Action.WindowDocked); +>this.method(Host.UserMetrics.Action.WindowDocked) : void +>this.method : (p: number) => void +>this : this +>method : (p: number) => void +>Host.UserMetrics.Action.WindowDocked : error +>Host.UserMetrics.Action : any +>Host.UserMetrics : typeof Host.UserMetrics +>Host : typeof Host +>UserMetrics : typeof Host.UserMetrics +>Action : any +>WindowDocked : any + } +} + +/** + * @type {Host.UserMetrics.Bargh} + */ +var x = "ok"; +>x : string +>"ok" : "ok" + +/** + * @type {Host.UserMetrics.Blah} + */ +var y = "ok"; +>y : string +>"ok" : "ok" + diff --git a/tests/baselines/reference/jsdocTemplateConstructorFunction.symbols b/tests/baselines/reference/jsdocTemplateConstructorFunction.symbols index d176aba903eb3..f9b5d1c6b6eb5 100644 --- a/tests/baselines/reference/jsdocTemplateConstructorFunction.symbols +++ b/tests/baselines/reference/jsdocTemplateConstructorFunction.symbols @@ -45,16 +45,16 @@ Zet.prototype.add = function(v, id) { >u : Symbol(Zet.u, Decl(templateTagOnConstructorFunctions.js, 8, 17), Decl(templateTagOnConstructorFunctions.js, 17, 37)) } var z = new Zet(1) ->z : Symbol(z, Decl(templateTagOnConstructorFunctions.js, 21, 3), Decl(templateTagOnConstructorFunctions.js, 21, 18)) +>z : Symbol(z, Decl(templateTagOnConstructorFunctions.js, 21, 3), Decl(templateTagOnConstructorFunctions.js, 21, 18), Decl(templateTagOnConstructorFunctions.js, 22, 7)) >Zet : Symbol(Zet, Decl(templateTagOnConstructorFunctions.js, 0, 0)) z.t = 2 >z.t : Symbol(Zet.t, Decl(templateTagOnConstructorFunctions.js, 10, 10)) ->z : Symbol(z, Decl(templateTagOnConstructorFunctions.js, 21, 3), Decl(templateTagOnConstructorFunctions.js, 21, 18)) +>z : Symbol(z, Decl(templateTagOnConstructorFunctions.js, 21, 3), Decl(templateTagOnConstructorFunctions.js, 21, 18), Decl(templateTagOnConstructorFunctions.js, 22, 7)) >t : Symbol(Zet.t, Decl(templateTagOnConstructorFunctions.js, 10, 10)) z.u = false >z.u : Symbol(Zet.u, Decl(templateTagOnConstructorFunctions.js, 8, 17), Decl(templateTagOnConstructorFunctions.js, 17, 37)) ->z : Symbol(z, Decl(templateTagOnConstructorFunctions.js, 21, 3), Decl(templateTagOnConstructorFunctions.js, 21, 18)) +>z : Symbol(z, Decl(templateTagOnConstructorFunctions.js, 21, 3), Decl(templateTagOnConstructorFunctions.js, 21, 18), Decl(templateTagOnConstructorFunctions.js, 22, 7)) >u : Symbol(Zet.u, Decl(templateTagOnConstructorFunctions.js, 8, 17), Decl(templateTagOnConstructorFunctions.js, 17, 37)) diff --git a/tests/baselines/reference/jsdocTemplateConstructorFunction2.symbols b/tests/baselines/reference/jsdocTemplateConstructorFunction2.symbols index ca12425262b60..073a59c283d2a 100644 --- a/tests/baselines/reference/jsdocTemplateConstructorFunction2.symbols +++ b/tests/baselines/reference/jsdocTemplateConstructorFunction2.symbols @@ -41,17 +41,17 @@ Zet.prototype.add = function(v, o) { >u : Symbol(Zet.u, Decl(templateTagWithNestedTypeLiteral.js, 4, 17), Decl(templateTagWithNestedTypeLiteral.js, 14, 36)) } var z = new Zet(1) ->z : Symbol(z, Decl(templateTagWithNestedTypeLiteral.js, 18, 3), Decl(templateTagWithNestedTypeLiteral.js, 18, 18)) +>z : Symbol(z, Decl(templateTagWithNestedTypeLiteral.js, 18, 3), Decl(templateTagWithNestedTypeLiteral.js, 18, 18), Decl(templateTagWithNestedTypeLiteral.js, 19, 7)) >Zet : Symbol(Zet, Decl(templateTagWithNestedTypeLiteral.js, 0, 0)) z.t = 2 >z.t : Symbol(Zet.t, Decl(templateTagWithNestedTypeLiteral.js, 6, 10)) ->z : Symbol(z, Decl(templateTagWithNestedTypeLiteral.js, 18, 3), Decl(templateTagWithNestedTypeLiteral.js, 18, 18)) +>z : Symbol(z, Decl(templateTagWithNestedTypeLiteral.js, 18, 3), Decl(templateTagWithNestedTypeLiteral.js, 18, 18), Decl(templateTagWithNestedTypeLiteral.js, 19, 7)) >t : Symbol(Zet.t, Decl(templateTagWithNestedTypeLiteral.js, 6, 10)) z.u = false >z.u : Symbol(Zet.u, Decl(templateTagWithNestedTypeLiteral.js, 4, 17), Decl(templateTagWithNestedTypeLiteral.js, 14, 36)) ->z : Symbol(z, Decl(templateTagWithNestedTypeLiteral.js, 18, 3), Decl(templateTagWithNestedTypeLiteral.js, 18, 18)) +>z : Symbol(z, Decl(templateTagWithNestedTypeLiteral.js, 18, 3), Decl(templateTagWithNestedTypeLiteral.js, 18, 18), Decl(templateTagWithNestedTypeLiteral.js, 19, 7)) >u : Symbol(Zet.u, Decl(templateTagWithNestedTypeLiteral.js, 4, 17), Decl(templateTagWithNestedTypeLiteral.js, 14, 36)) // lookup in typedef should not crash the compiler, even when the type is unknown diff --git a/tests/baselines/reference/jsdocTypeFromChainedAssignment.symbols b/tests/baselines/reference/jsdocTypeFromChainedAssignment.symbols index dbf21cf0925f1..5b1be631fd966 100644 --- a/tests/baselines/reference/jsdocTypeFromChainedAssignment.symbols +++ b/tests/baselines/reference/jsdocTypeFromChainedAssignment.symbols @@ -1,6 +1,6 @@ === tests/cases/conformance/jsdoc/a.js === function A () { ->A : Symbol(A, Decl(a.js, 0, 0), Decl(a.js, 8, 1)) +>A : Symbol(A, Decl(a.js, 0, 0), Decl(a.js, 8, 1), Decl(a.js, 10, 5)) this.x = 1 >x : Symbol(A.x, Decl(a.js, 0, 15)) @@ -13,11 +13,11 @@ function A () { /** @param {number} n */ A.prototype.y = A.prototype.z = function f(n) { >A.prototype : Symbol(A.y, Decl(a.js, 4, 1)) ->A : Symbol(A, Decl(a.js, 0, 0), Decl(a.js, 8, 1)) +>A : Symbol(A, Decl(a.js, 0, 0), Decl(a.js, 8, 1), Decl(a.js, 10, 5)) >prototype : Symbol(Function.prototype, Decl(lib.es5.d.ts, --, --)) >y : Symbol(A.y, Decl(a.js, 4, 1)) >A.prototype : Symbol(A.z, Decl(a.js, 6, 15)) ->A : Symbol(A, Decl(a.js, 0, 0), Decl(a.js, 8, 1)) +>A : Symbol(A, Decl(a.js, 0, 0), Decl(a.js, 8, 1), Decl(a.js, 10, 5)) >prototype : Symbol(Function.prototype, Decl(lib.es5.d.ts, --, --)) >z : Symbol(A.z, Decl(a.js, 6, 15)) >f : Symbol(f, Decl(a.js, 6, 31)) @@ -26,27 +26,27 @@ A.prototype.y = A.prototype.z = function f(n) { return n + this.x >n : Symbol(n, Decl(a.js, 6, 43)) >this.x : Symbol(A.x, Decl(a.js, 0, 15)) ->this : Symbol(A, Decl(a.js, 0, 0), Decl(a.js, 8, 1)) +>this : Symbol(A, Decl(a.js, 0, 0), Decl(a.js, 8, 1), Decl(a.js, 10, 5)) >x : Symbol(A.x, Decl(a.js, 0, 15)) } /** @param {number} m */ A.s = A.t = function g(m) { >A.s : Symbol(A.s, Decl(a.js, 8, 1)) ->A : Symbol(A, Decl(a.js, 0, 0), Decl(a.js, 8, 1)) +>A : Symbol(A, Decl(a.js, 0, 0), Decl(a.js, 8, 1), Decl(a.js, 10, 5)) >s : Symbol(A.s, Decl(a.js, 8, 1)) >A.t : Symbol(A.t, Decl(a.js, 10, 5)) ->A : Symbol(A, Decl(a.js, 0, 0), Decl(a.js, 8, 1)) +>A : Symbol(A, Decl(a.js, 0, 0), Decl(a.js, 8, 1), Decl(a.js, 10, 5)) >t : Symbol(A.t, Decl(a.js, 10, 5)) >g : Symbol(g, Decl(a.js, 10, 11)) >m : Symbol(m, Decl(a.js, 10, 23)) return m + this.x >m : Symbol(m, Decl(a.js, 10, 23)) ->this : Symbol(A, Decl(a.js, 0, 0), Decl(a.js, 8, 1)) +>this : Symbol(A, Decl(a.js, 0, 0), Decl(a.js, 8, 1), Decl(a.js, 10, 5)) } var a = new A() >a : Symbol(a, Decl(a.js, 13, 3), Decl(a.js, 17, 22)) ->A : Symbol(A, Decl(a.js, 0, 0), Decl(a.js, 8, 1)) +>A : Symbol(A, Decl(a.js, 0, 0), Decl(a.js, 8, 1), Decl(a.js, 10, 5)) a.y('no') // error >a.y : Symbol(A.y, Decl(a.js, 4, 1)) @@ -60,12 +60,12 @@ a.z('not really') // error A.s('still no') // error >A.s : Symbol(A.s, Decl(a.js, 8, 1)) ->A : Symbol(A, Decl(a.js, 0, 0), Decl(a.js, 8, 1)) +>A : Symbol(A, Decl(a.js, 0, 0), Decl(a.js, 8, 1), Decl(a.js, 10, 5)) >s : Symbol(A.s, Decl(a.js, 8, 1)) A.t('not here either') // error >A.t : Symbol(A.t, Decl(a.js, 10, 5)) ->A : Symbol(A, Decl(a.js, 0, 0), Decl(a.js, 8, 1)) +>A : Symbol(A, Decl(a.js, 0, 0), Decl(a.js, 8, 1), Decl(a.js, 10, 5)) >t : Symbol(A.t, Decl(a.js, 10, 5)) a.first = 10 // error: '10' isn't assignable to '1' diff --git a/tests/baselines/reference/misspelledJsDocTypedefTags.symbols b/tests/baselines/reference/misspelledJsDocTypedefTags.symbols index 1dda7f1fd5851..c7a48f8994613 100644 --- a/tests/baselines/reference/misspelledJsDocTypedefTags.symbols +++ b/tests/baselines/reference/misspelledJsDocTypedefTags.symbols @@ -1,9 +1,9 @@ === tests/cases/compiler/a.js === /** @typedef {{ endTime: number, screenshots: number}} A.*/ Animation.AnimationModel.ScreenshotCapture.Request; ->Animation : Symbol(Animation, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --)) +>Animation : Symbol(Animation, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(a.js, 1, 51)) /** @typedef {{ endTime: number, screenshots: !B.}} */ Animation.AnimationModel.ScreenshotCapture.Request; ->Animation : Symbol(Animation, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --)) +>Animation : Symbol(Animation, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(a.js, 1, 51)) diff --git a/tests/baselines/reference/moduleExportWithExportPropertyAssignment4.symbols b/tests/baselines/reference/moduleExportWithExportPropertyAssignment4.symbols index 1dd9bed92e6b0..edb7d52254a46 100644 --- a/tests/baselines/reference/moduleExportWithExportPropertyAssignment4.symbols +++ b/tests/baselines/reference/moduleExportWithExportPropertyAssignment4.symbols @@ -49,27 +49,27 @@ module.exports.bothBefore = 'string' A.justExport = 4 >A.justExport : Symbol(A.justExport, Decl(mod1.js, 1, 36)) ->A : Symbol(A, Decl(mod1.js, 5, 18), Decl(mod1.js, 1, 36)) +>A : Symbol(A, Decl(mod1.js, 5, 18), Decl(mod1.js, 1, 36), Decl(mod1.js, 2, 16), Decl(mod1.js, 3, 16)) >justExport : Symbol(A.justExport, Decl(mod1.js, 1, 36)) A.bothBefore = 2 >A.bothBefore : Symbol(A.bothBefore, Decl(mod1.js, 2, 16), Decl(mod1.js, 0, 0)) ->A : Symbol(A, Decl(mod1.js, 5, 18), Decl(mod1.js, 1, 36)) +>A : Symbol(A, Decl(mod1.js, 5, 18), Decl(mod1.js, 1, 36), Decl(mod1.js, 2, 16), Decl(mod1.js, 3, 16)) >bothBefore : Symbol(A.bothBefore, Decl(mod1.js, 2, 16), Decl(mod1.js, 0, 0)) A.bothAfter = 3 >A.bothAfter : Symbol(A.bothAfter, Decl(mod1.js, 3, 16), Decl(mod1.js, 8, 1)) ->A : Symbol(A, Decl(mod1.js, 5, 18), Decl(mod1.js, 1, 36)) +>A : Symbol(A, Decl(mod1.js, 5, 18), Decl(mod1.js, 1, 36), Decl(mod1.js, 2, 16), Decl(mod1.js, 3, 16)) >bothAfter : Symbol(A.bothAfter, Decl(mod1.js, 3, 16), Decl(mod1.js, 8, 1)) module.exports = A >module.exports : Symbol("tests/cases/conformance/salsa/mod1", Decl(mod1.js, 0, 0)) >module : Symbol(export=, Decl(mod1.js, 4, 15)) >exports : Symbol(export=, Decl(mod1.js, 4, 15)) ->A : Symbol(A, Decl(mod1.js, 5, 18), Decl(mod1.js, 1, 36)) +>A : Symbol(A, Decl(mod1.js, 5, 18), Decl(mod1.js, 1, 36), Decl(mod1.js, 2, 16), Decl(mod1.js, 3, 16)) function A() { ->A : Symbol(A, Decl(mod1.js, 5, 18), Decl(mod1.js, 1, 36)) +>A : Symbol(A, Decl(mod1.js, 5, 18), Decl(mod1.js, 1, 36), Decl(mod1.js, 2, 16), Decl(mod1.js, 3, 16)) this.p = 1 >p : Symbol(A.p, Decl(mod1.js, 6, 14)) diff --git a/tests/baselines/reference/targetTypeTest1.errors.txt b/tests/baselines/reference/targetTypeTest1.errors.txt index a0b05690a3b83..03a4f0018b355 100644 --- a/tests/baselines/reference/targetTypeTest1.errors.txt +++ b/tests/baselines/reference/targetTypeTest1.errors.txt @@ -1,11 +1,13 @@ tests/cases/compiler/targetTypeTest1.ts(1,15): error TS2300: Duplicate identifier 'Point'. +tests/cases/compiler/targetTypeTest1.ts(6,43): error TS2709: Cannot use namespace 'Point' as a type. +tests/cases/compiler/targetTypeTest1.ts(7,22): error TS2709: Cannot use namespace 'Point' as a type. tests/cases/compiler/targetTypeTest1.ts(14,10): error TS2300: Duplicate identifier 'Point'. tests/cases/compiler/targetTypeTest1.ts(19,18): error TS2384: Overload signatures must all be ambient or non-ambient. tests/cases/compiler/targetTypeTest1.ts(53,15): error TS2300: Duplicate identifier 'C'. tests/cases/compiler/targetTypeTest1.ts(60,10): error TS2300: Duplicate identifier 'C'. -==== tests/cases/compiler/targetTypeTest1.ts (5 errors) ==== +==== tests/cases/compiler/targetTypeTest1.ts (7 errors) ==== declare class Point ~~~~~ !!! error TS2300: Duplicate identifier 'Point'. @@ -14,7 +16,11 @@ tests/cases/compiler/targetTypeTest1.ts(60,10): error TS2300: Duplicate identifi public x: number; public y: number; public add(dx: number, dy: number): Point; + ~~~~~ +!!! error TS2709: Cannot use namespace 'Point' as a type. static origin: Point; + ~~~~~ +!!! error TS2709: Cannot use namespace 'Point' as a type. } diff --git a/tests/baselines/reference/targetTypeTest1.symbols b/tests/baselines/reference/targetTypeTest1.symbols index e8b5292603f59..9bbad1ef89ad9 100644 --- a/tests/baselines/reference/targetTypeTest1.symbols +++ b/tests/baselines/reference/targetTypeTest1.symbols @@ -16,11 +16,9 @@ declare class Point >add : Symbol(Point.add, Decl(targetTypeTest1.ts, 4, 23)) >dx : Symbol(dx, Decl(targetTypeTest1.ts, 5, 17)) >dy : Symbol(dy, Decl(targetTypeTest1.ts, 5, 28)) ->Point : Symbol(Point, Decl(targetTypeTest1.ts, 8, 1), Decl(targetTypeTest1.ts, 22, 17)) static origin: Point; >origin : Symbol(Point.origin, Decl(targetTypeTest1.ts, 5, 48)) ->Point : Symbol(Point, Decl(targetTypeTest1.ts, 8, 1), Decl(targetTypeTest1.ts, 22, 17)) } diff --git a/tests/baselines/reference/typeFromJSInitializer.symbols b/tests/baselines/reference/typeFromJSInitializer.symbols index d7453d1f1e1f6..b4bc995084738 100644 --- a/tests/baselines/reference/typeFromJSInitializer.symbols +++ b/tests/baselines/reference/typeFromJSInitializer.symbols @@ -14,74 +14,74 @@ function A () { >empty : Symbol(A.empty, Decl(a.js, 3, 31)) } var a = new A() ->a : Symbol(a, Decl(a.js, 6, 3), Decl(a.js, 6, 15)) +>a : Symbol(a, Decl(a.js, 6, 3), Decl(a.js, 6, 15), Decl(a.js, 7, 13), Decl(a.js, 8, 16), Decl(a.js, 9, 14) ... and 4 more) >A : Symbol(A, Decl(a.js, 0, 0)) a.unknown = 1 >a.unknown : Symbol(A.unknown, Decl(a.js, 0, 15)) ->a : Symbol(a, Decl(a.js, 6, 3), Decl(a.js, 6, 15)) +>a : Symbol(a, Decl(a.js, 6, 3), Decl(a.js, 6, 15), Decl(a.js, 7, 13), Decl(a.js, 8, 16), Decl(a.js, 9, 14) ... and 4 more) >unknown : Symbol(A.unknown, Decl(a.js, 0, 15)) a.unknown = true >a.unknown : Symbol(A.unknown, Decl(a.js, 0, 15)) ->a : Symbol(a, Decl(a.js, 6, 3), Decl(a.js, 6, 15)) +>a : Symbol(a, Decl(a.js, 6, 3), Decl(a.js, 6, 15), Decl(a.js, 7, 13), Decl(a.js, 8, 16), Decl(a.js, 9, 14) ... and 4 more) >unknown : Symbol(A.unknown, Decl(a.js, 0, 15)) a.unknown = {} >a.unknown : Symbol(A.unknown, Decl(a.js, 0, 15)) ->a : Symbol(a, Decl(a.js, 6, 3), Decl(a.js, 6, 15)) +>a : Symbol(a, Decl(a.js, 6, 3), Decl(a.js, 6, 15), Decl(a.js, 7, 13), Decl(a.js, 8, 16), Decl(a.js, 9, 14) ... and 4 more) >unknown : Symbol(A.unknown, Decl(a.js, 0, 15)) a.unknown = 'hi' >a.unknown : Symbol(A.unknown, Decl(a.js, 0, 15)) ->a : Symbol(a, Decl(a.js, 6, 3), Decl(a.js, 6, 15)) +>a : Symbol(a, Decl(a.js, 6, 3), Decl(a.js, 6, 15), Decl(a.js, 7, 13), Decl(a.js, 8, 16), Decl(a.js, 9, 14) ... and 4 more) >unknown : Symbol(A.unknown, Decl(a.js, 0, 15)) a.unknowable = 1 >a.unknowable : Symbol(A.unknowable, Decl(a.js, 2, 23)) ->a : Symbol(a, Decl(a.js, 6, 3), Decl(a.js, 6, 15)) +>a : Symbol(a, Decl(a.js, 6, 3), Decl(a.js, 6, 15), Decl(a.js, 7, 13), Decl(a.js, 8, 16), Decl(a.js, 9, 14) ... and 4 more) >unknowable : Symbol(A.unknowable, Decl(a.js, 2, 23)) a.unknowable = true >a.unknowable : Symbol(A.unknowable, Decl(a.js, 2, 23)) ->a : Symbol(a, Decl(a.js, 6, 3), Decl(a.js, 6, 15)) +>a : Symbol(a, Decl(a.js, 6, 3), Decl(a.js, 6, 15), Decl(a.js, 7, 13), Decl(a.js, 8, 16), Decl(a.js, 9, 14) ... and 4 more) >unknowable : Symbol(A.unknowable, Decl(a.js, 2, 23)) a.unknowable = {} >a.unknowable : Symbol(A.unknowable, Decl(a.js, 2, 23)) ->a : Symbol(a, Decl(a.js, 6, 3), Decl(a.js, 6, 15)) +>a : Symbol(a, Decl(a.js, 6, 3), Decl(a.js, 6, 15), Decl(a.js, 7, 13), Decl(a.js, 8, 16), Decl(a.js, 9, 14) ... and 4 more) >unknowable : Symbol(A.unknowable, Decl(a.js, 2, 23)) a.unknowable = 'hi' >a.unknowable : Symbol(A.unknowable, Decl(a.js, 2, 23)) ->a : Symbol(a, Decl(a.js, 6, 3), Decl(a.js, 6, 15)) +>a : Symbol(a, Decl(a.js, 6, 3), Decl(a.js, 6, 15), Decl(a.js, 7, 13), Decl(a.js, 8, 16), Decl(a.js, 9, 14) ... and 4 more) >unknowable : Symbol(A.unknowable, Decl(a.js, 2, 23)) a.empty.push(1) >a.empty.push : Symbol(Array.push, Decl(lib.es5.d.ts, --, --)) >a.empty : Symbol(A.empty, Decl(a.js, 3, 31)) ->a : Symbol(a, Decl(a.js, 6, 3), Decl(a.js, 6, 15)) +>a : Symbol(a, Decl(a.js, 6, 3), Decl(a.js, 6, 15), Decl(a.js, 7, 13), Decl(a.js, 8, 16), Decl(a.js, 9, 14) ... and 4 more) >empty : Symbol(A.empty, Decl(a.js, 3, 31)) >push : Symbol(Array.push, Decl(lib.es5.d.ts, --, --)) a.empty.push(true) >a.empty.push : Symbol(Array.push, Decl(lib.es5.d.ts, --, --)) >a.empty : Symbol(A.empty, Decl(a.js, 3, 31)) ->a : Symbol(a, Decl(a.js, 6, 3), Decl(a.js, 6, 15)) +>a : Symbol(a, Decl(a.js, 6, 3), Decl(a.js, 6, 15), Decl(a.js, 7, 13), Decl(a.js, 8, 16), Decl(a.js, 9, 14) ... and 4 more) >empty : Symbol(A.empty, Decl(a.js, 3, 31)) >push : Symbol(Array.push, Decl(lib.es5.d.ts, --, --)) a.empty.push({}) >a.empty.push : Symbol(Array.push, Decl(lib.es5.d.ts, --, --)) >a.empty : Symbol(A.empty, Decl(a.js, 3, 31)) ->a : Symbol(a, Decl(a.js, 6, 3), Decl(a.js, 6, 15)) +>a : Symbol(a, Decl(a.js, 6, 3), Decl(a.js, 6, 15), Decl(a.js, 7, 13), Decl(a.js, 8, 16), Decl(a.js, 9, 14) ... and 4 more) >empty : Symbol(A.empty, Decl(a.js, 3, 31)) >push : Symbol(Array.push, Decl(lib.es5.d.ts, --, --)) a.empty.push('hi') >a.empty.push : Symbol(Array.push, Decl(lib.es5.d.ts, --, --)) >a.empty : Symbol(A.empty, Decl(a.js, 3, 31)) ->a : Symbol(a, Decl(a.js, 6, 3), Decl(a.js, 6, 15)) +>a : Symbol(a, Decl(a.js, 6, 3), Decl(a.js, 6, 15), Decl(a.js, 7, 13), Decl(a.js, 8, 16), Decl(a.js, 9, 14) ... and 4 more) >empty : Symbol(A.empty, Decl(a.js, 3, 31)) >push : Symbol(Array.push, Decl(lib.es5.d.ts, --, --)) diff --git a/tests/baselines/reference/typeFromPropertyAssignment10.symbols b/tests/baselines/reference/typeFromPropertyAssignment10.symbols index 9b0af67835264..3a4f826f6a3d6 100644 --- a/tests/baselines/reference/typeFromPropertyAssignment10.symbols +++ b/tests/baselines/reference/typeFromPropertyAssignment10.symbols @@ -1,22 +1,22 @@ === tests/cases/conformance/salsa/module.js === var Outer = Outer || {}; ->Outer : Symbol(Outer, Decl(module.js, 0, 3), Decl(module.js, 0, 24), Decl(someview.js, 0, 0), Decl(application.js, 0, 0)) ->Outer : Symbol(Outer, Decl(module.js, 0, 3), Decl(module.js, 0, 24), Decl(someview.js, 0, 0), Decl(application.js, 0, 0)) +>Outer : Symbol(Outer, Decl(module.js, 0, 3), Decl(module.js, 0, 24), Decl(someview.js, 0, 0), Decl(someview.js, 5, 5), Decl(someview.js, 13, 10) ... and 1 more) +>Outer : Symbol(Outer, Decl(module.js, 0, 3), Decl(module.js, 0, 24), Decl(someview.js, 0, 0), Decl(someview.js, 5, 5), Decl(someview.js, 13, 10) ... and 1 more) Outer.app = Outer.app || {}; ->Outer.app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(application.js, 0, 6)) ->Outer : Symbol(Outer, Decl(module.js, 0, 3), Decl(module.js, 0, 24), Decl(someview.js, 0, 0), Decl(application.js, 0, 0)) ->app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(application.js, 0, 6)) ->Outer.app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(application.js, 0, 6)) ->Outer : Symbol(Outer, Decl(module.js, 0, 3), Decl(module.js, 0, 24), Decl(someview.js, 0, 0), Decl(application.js, 0, 0)) ->app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(application.js, 0, 6)) +>Outer.app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(someview.js, 6, 6), Decl(someview.js, 15, 6), Decl(application.js, 0, 6)) +>Outer : Symbol(Outer, Decl(module.js, 0, 3), Decl(module.js, 0, 24), Decl(someview.js, 0, 0), Decl(someview.js, 5, 5), Decl(someview.js, 13, 10) ... and 1 more) +>app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(someview.js, 6, 6), Decl(someview.js, 15, 6), Decl(application.js, 0, 6)) +>Outer.app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(someview.js, 6, 6), Decl(someview.js, 15, 6), Decl(application.js, 0, 6)) +>Outer : Symbol(Outer, Decl(module.js, 0, 3), Decl(module.js, 0, 24), Decl(someview.js, 0, 0), Decl(someview.js, 5, 5), Decl(someview.js, 13, 10) ... and 1 more) +>app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(someview.js, 6, 6), Decl(someview.js, 15, 6), Decl(application.js, 0, 6)) === tests/cases/conformance/salsa/someview.js === Outer.app.SomeView = (function () { >Outer.app.SomeView : Symbol(Outer.app.SomeView, Decl(someview.js, 0, 0)) ->Outer.app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(application.js, 0, 6)) ->Outer : Symbol(Outer, Decl(module.js, 0, 3), Decl(module.js, 0, 24), Decl(someview.js, 0, 0), Decl(application.js, 0, 0)) ->app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(application.js, 0, 6)) +>Outer.app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(someview.js, 6, 6), Decl(someview.js, 15, 6), Decl(application.js, 0, 6)) +>Outer : Symbol(Outer, Decl(module.js, 0, 3), Decl(module.js, 0, 24), Decl(someview.js, 0, 0), Decl(someview.js, 5, 5), Decl(someview.js, 13, 10) ... and 1 more) +>app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(someview.js, 6, 6), Decl(someview.js, 15, 6), Decl(application.js, 0, 6)) >SomeView : Symbol(Outer.app.SomeView, Decl(someview.js, 0, 0)) var SomeView = function() { @@ -31,9 +31,9 @@ Outer.app.SomeView = (function () { })(); Outer.app.Inner = class { >Outer.app.Inner : Symbol(Outer.app.Inner, Decl(someview.js, 5, 5)) ->Outer.app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(application.js, 0, 6)) ->Outer : Symbol(Outer, Decl(module.js, 0, 3), Decl(module.js, 0, 24), Decl(someview.js, 0, 0), Decl(application.js, 0, 0)) ->app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(application.js, 0, 6)) +>Outer.app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(someview.js, 6, 6), Decl(someview.js, 15, 6), Decl(application.js, 0, 6)) +>Outer : Symbol(Outer, Decl(module.js, 0, 3), Decl(module.js, 0, 24), Decl(someview.js, 0, 0), Decl(someview.js, 5, 5), Decl(someview.js, 13, 10) ... and 1 more) +>app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(someview.js, 6, 6), Decl(someview.js, 15, 6), Decl(application.js, 0, 6)) >Inner : Symbol(Outer.app.Inner, Decl(someview.js, 5, 5)) constructor() { @@ -47,9 +47,9 @@ Outer.app.Inner = class { var example = new Outer.app.Inner(); >example : Symbol(example, Decl(someview.js, 12, 3)) >Outer.app.Inner : Symbol(Outer.app.Inner, Decl(someview.js, 5, 5)) ->Outer.app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(application.js, 0, 6)) ->Outer : Symbol(Outer, Decl(module.js, 0, 3), Decl(module.js, 0, 24), Decl(someview.js, 0, 0), Decl(application.js, 0, 0)) ->app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(application.js, 0, 6)) +>Outer.app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(someview.js, 6, 6), Decl(someview.js, 15, 6), Decl(application.js, 0, 6)) +>Outer : Symbol(Outer, Decl(module.js, 0, 3), Decl(module.js, 0, 24), Decl(someview.js, 0, 0), Decl(someview.js, 5, 5), Decl(someview.js, 13, 10) ... and 1 more) +>app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(someview.js, 6, 6), Decl(someview.js, 15, 6), Decl(application.js, 0, 6)) >Inner : Symbol(Outer.app.Inner, Decl(someview.js, 5, 5)) example.y; @@ -60,9 +60,9 @@ example.y; /** @param {number} k */ Outer.app.statische = function (k) { >Outer.app.statische : Symbol(Outer.app.statische, Decl(someview.js, 13, 10)) ->Outer.app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(application.js, 0, 6)) ->Outer : Symbol(Outer, Decl(module.js, 0, 3), Decl(module.js, 0, 24), Decl(someview.js, 0, 0), Decl(application.js, 0, 0)) ->app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(application.js, 0, 6)) +>Outer.app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(someview.js, 6, 6), Decl(someview.js, 15, 6), Decl(application.js, 0, 6)) +>Outer : Symbol(Outer, Decl(module.js, 0, 3), Decl(module.js, 0, 24), Decl(someview.js, 0, 0), Decl(someview.js, 5, 5), Decl(someview.js, 13, 10) ... and 1 more) +>app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(someview.js, 6, 6), Decl(someview.js, 15, 6), Decl(application.js, 0, 6)) >statische : Symbol(Outer.app.statische, Decl(someview.js, 13, 10)) >k : Symbol(k, Decl(someview.js, 15, 32)) @@ -73,9 +73,9 @@ Outer.app.statische = function (k) { === tests/cases/conformance/salsa/application.js === Outer.app.Application = (function () { >Outer.app.Application : Symbol(Outer.app.Application, Decl(application.js, 0, 0)) ->Outer.app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(application.js, 0, 6)) ->Outer : Symbol(Outer, Decl(module.js, 0, 3), Decl(module.js, 0, 24), Decl(someview.js, 0, 0), Decl(application.js, 0, 0)) ->app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(application.js, 0, 6)) +>Outer.app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(someview.js, 6, 6), Decl(someview.js, 15, 6), Decl(application.js, 0, 6)) +>Outer : Symbol(Outer, Decl(module.js, 0, 3), Decl(module.js, 0, 24), Decl(someview.js, 0, 0), Decl(someview.js, 5, 5), Decl(someview.js, 13, 10) ... and 1 more) +>app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(someview.js, 6, 6), Decl(someview.js, 15, 6), Decl(application.js, 0, 6)) >Application : Symbol(Outer.app.Application, Decl(application.js, 0, 0)) /** @@ -91,9 +91,9 @@ Outer.app.Application = (function () { me.view = new Outer.app.SomeView(); >me : Symbol(me, Decl(application.js, 7, 11)) >Outer.app.SomeView : Symbol(Outer.app.SomeView, Decl(someview.js, 0, 0)) ->Outer.app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(application.js, 0, 6)) ->Outer : Symbol(Outer, Decl(module.js, 0, 3), Decl(module.js, 0, 24), Decl(someview.js, 0, 0), Decl(application.js, 0, 0)) ->app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(application.js, 0, 6)) +>Outer.app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(someview.js, 6, 6), Decl(someview.js, 15, 6), Decl(application.js, 0, 6)) +>Outer : Symbol(Outer, Decl(module.js, 0, 3), Decl(module.js, 0, 24), Decl(someview.js, 0, 0), Decl(someview.js, 5, 5), Decl(someview.js, 13, 10) ... and 1 more) +>app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(someview.js, 6, 6), Decl(someview.js, 15, 6), Decl(application.js, 0, 6)) >SomeView : Symbol(Outer.app.SomeView, Decl(someview.js, 0, 0)) }; @@ -105,17 +105,17 @@ Outer.app.Application = (function () { var app = new Outer.app.Application(); >app : Symbol(app, Decl(main.js, 0, 3)) >Outer.app.Application : Symbol(Outer.app.Application, Decl(application.js, 0, 0)) ->Outer.app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(application.js, 0, 6)) ->Outer : Symbol(Outer, Decl(module.js, 0, 3), Decl(module.js, 0, 24), Decl(someview.js, 0, 0), Decl(application.js, 0, 0)) ->app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(application.js, 0, 6)) +>Outer.app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(someview.js, 6, 6), Decl(someview.js, 15, 6), Decl(application.js, 0, 6)) +>Outer : Symbol(Outer, Decl(module.js, 0, 3), Decl(module.js, 0, 24), Decl(someview.js, 0, 0), Decl(someview.js, 5, 5), Decl(someview.js, 13, 10) ... and 1 more) +>app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(someview.js, 6, 6), Decl(someview.js, 15, 6), Decl(application.js, 0, 6)) >Application : Symbol(Outer.app.Application, Decl(application.js, 0, 0)) var inner = new Outer.app.Inner(); >inner : Symbol(inner, Decl(main.js, 1, 3)) >Outer.app.Inner : Symbol(Outer.app.Inner, Decl(someview.js, 5, 5)) ->Outer.app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(application.js, 0, 6)) ->Outer : Symbol(Outer, Decl(module.js, 0, 3), Decl(module.js, 0, 24), Decl(someview.js, 0, 0), Decl(application.js, 0, 0)) ->app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(application.js, 0, 6)) +>Outer.app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(someview.js, 6, 6), Decl(someview.js, 15, 6), Decl(application.js, 0, 6)) +>Outer : Symbol(Outer, Decl(module.js, 0, 3), Decl(module.js, 0, 24), Decl(someview.js, 0, 0), Decl(someview.js, 5, 5), Decl(someview.js, 13, 10) ... and 1 more) +>app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(someview.js, 6, 6), Decl(someview.js, 15, 6), Decl(application.js, 0, 6)) >Inner : Symbol(Outer.app.Inner, Decl(someview.js, 5, 5)) inner.y; @@ -134,8 +134,8 @@ x.y; Outer.app.statische(101); // Infinity, duh >Outer.app.statische : Symbol(Outer.app.statische, Decl(someview.js, 13, 10)) ->Outer.app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(application.js, 0, 6)) ->Outer : Symbol(Outer, Decl(module.js, 0, 3), Decl(module.js, 0, 24), Decl(someview.js, 0, 0), Decl(application.js, 0, 0)) ->app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(application.js, 0, 6)) +>Outer.app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(someview.js, 6, 6), Decl(someview.js, 15, 6), Decl(application.js, 0, 6)) +>Outer : Symbol(Outer, Decl(module.js, 0, 3), Decl(module.js, 0, 24), Decl(someview.js, 0, 0), Decl(someview.js, 5, 5), Decl(someview.js, 13, 10) ... and 1 more) +>app : Symbol(Outer.app, Decl(module.js, 0, 24), Decl(someview.js, 0, 6), Decl(someview.js, 6, 6), Decl(someview.js, 15, 6), Decl(application.js, 0, 6)) >statische : Symbol(Outer.app.statische, Decl(someview.js, 13, 10)) diff --git a/tests/baselines/reference/typeFromPropertyAssignment17.symbols b/tests/baselines/reference/typeFromPropertyAssignment17.symbols index 165d3a04f8d4e..5d6f98f309b63 100644 --- a/tests/baselines/reference/typeFromPropertyAssignment17.symbols +++ b/tests/baselines/reference/typeFromPropertyAssignment17.symbols @@ -41,17 +41,17 @@ module.exports = minimatch >module.exports : Symbol("tests/cases/conformance/salsa/minimatch", Decl(minimatch.js, 0, 0)) >module : Symbol(export=, Decl(minimatch.js, 0, 0)) >exports : Symbol(export=, Decl(minimatch.js, 0, 0)) ->minimatch : Symbol(minimatch, Decl(minimatch.js, 6, 1), Decl(minimatch.js, 1, 26)) +>minimatch : Symbol(minimatch, Decl(minimatch.js, 6, 1), Decl(minimatch.js, 1, 26), Decl(minimatch.js, 2, 15)) minimatch.M = M >minimatch.M : Symbol(minimatch.M, Decl(minimatch.js, 1, 26)) ->minimatch : Symbol(minimatch, Decl(minimatch.js, 6, 1), Decl(minimatch.js, 1, 26)) +>minimatch : Symbol(minimatch, Decl(minimatch.js, 6, 1), Decl(minimatch.js, 1, 26), Decl(minimatch.js, 2, 15)) >M : Symbol(minimatch.M, Decl(minimatch.js, 1, 26)) >M : Symbol(M, Decl(minimatch.js, 13, 1), Decl(minimatch.js, 8, 1)) minimatch.filter = filter >minimatch.filter : Symbol(minimatch.filter, Decl(minimatch.js, 2, 15)) ->minimatch : Symbol(minimatch, Decl(minimatch.js, 6, 1), Decl(minimatch.js, 1, 26)) +>minimatch : Symbol(minimatch, Decl(minimatch.js, 6, 1), Decl(minimatch.js, 1, 26), Decl(minimatch.js, 2, 15)) >filter : Symbol(minimatch.filter, Decl(minimatch.js, 2, 15)) >filter : Symbol(filter, Decl(minimatch.js, 3, 25)) @@ -59,10 +59,10 @@ function filter() { >filter : Symbol(filter, Decl(minimatch.js, 3, 25)) return minimatch() ->minimatch : Symbol(minimatch, Decl(minimatch.js, 6, 1), Decl(minimatch.js, 1, 26)) +>minimatch : Symbol(minimatch, Decl(minimatch.js, 6, 1), Decl(minimatch.js, 1, 26), Decl(minimatch.js, 2, 15)) } function minimatch() { ->minimatch : Symbol(minimatch, Decl(minimatch.js, 6, 1), Decl(minimatch.js, 1, 26)) +>minimatch : Symbol(minimatch, Decl(minimatch.js, 6, 1), Decl(minimatch.js, 1, 26), Decl(minimatch.js, 2, 15)) } M.defaults = function (def) { >M.defaults : Symbol(M.defaults, Decl(minimatch.js, 8, 1)) diff --git a/tests/baselines/reference/typeFromPropertyAssignment25.symbols b/tests/baselines/reference/typeFromPropertyAssignment25.symbols index a98333e97d06d..d2be36efd2e44 100644 --- a/tests/baselines/reference/typeFromPropertyAssignment25.symbols +++ b/tests/baselines/reference/typeFromPropertyAssignment25.symbols @@ -1,10 +1,10 @@ === tests/cases/conformance/salsa/bug24703.js === var Common = {}; ->Common : Symbol(Common, Decl(bug24703.js, 0, 3), Decl(bug24703.js, 0, 16)) +>Common : Symbol(Common, Decl(bug24703.js, 0, 3), Decl(bug24703.js, 0, 16), Decl(bug24703.js, 5, 1)) Common.I = class { >Common.I : Symbol(Common.I, Decl(bug24703.js, 0, 16)) ->Common : Symbol(Common, Decl(bug24703.js, 0, 3), Decl(bug24703.js, 0, 16)) +>Common : Symbol(Common, Decl(bug24703.js, 0, 3), Decl(bug24703.js, 0, 16), Decl(bug24703.js, 5, 1)) >I : Symbol(Common.I, Decl(bug24703.js, 0, 16)) constructor() { @@ -16,10 +16,10 @@ Common.I = class { } Common.O = class extends Common.I { >Common.O : Symbol(Common.O, Decl(bug24703.js, 5, 1)) ->Common : Symbol(Common, Decl(bug24703.js, 0, 3), Decl(bug24703.js, 0, 16)) +>Common : Symbol(Common, Decl(bug24703.js, 0, 3), Decl(bug24703.js, 0, 16), Decl(bug24703.js, 5, 1)) >O : Symbol(Common.O, Decl(bug24703.js, 5, 1)) >Common.I : Symbol(Common.I, Decl(bug24703.js, 0, 16)) ->Common : Symbol(Common, Decl(bug24703.js, 0, 3), Decl(bug24703.js, 0, 16)) +>Common : Symbol(Common, Decl(bug24703.js, 0, 3), Decl(bug24703.js, 0, 16), Decl(bug24703.js, 5, 1)) >I : Symbol(Common.I, Decl(bug24703.js, 0, 16)) constructor() { @@ -35,13 +35,13 @@ Common.O = class extends Common.I { var o = new Common.O() >o : Symbol(o, Decl(bug24703.js, 12, 3)) >Common.O : Symbol(Common.O, Decl(bug24703.js, 5, 1)) ->Common : Symbol(Common, Decl(bug24703.js, 0, 3), Decl(bug24703.js, 0, 16)) +>Common : Symbol(Common, Decl(bug24703.js, 0, 3), Decl(bug24703.js, 0, 16), Decl(bug24703.js, 5, 1)) >O : Symbol(Common.O, Decl(bug24703.js, 5, 1)) var i = new Common.I() >i : Symbol(i, Decl(bug24703.js, 13, 3)) >Common.I : Symbol(Common.I, Decl(bug24703.js, 0, 16)) ->Common : Symbol(Common, Decl(bug24703.js, 0, 3), Decl(bug24703.js, 0, 16)) +>Common : Symbol(Common, Decl(bug24703.js, 0, 3), Decl(bug24703.js, 0, 16), Decl(bug24703.js, 5, 1)) >I : Symbol(Common.I, Decl(bug24703.js, 0, 16)) o.i diff --git a/tests/baselines/reference/typeFromPropertyAssignment26.symbols b/tests/baselines/reference/typeFromPropertyAssignment26.symbols index f70413c819f28..77e48ed24b025 100644 --- a/tests/baselines/reference/typeFromPropertyAssignment26.symbols +++ b/tests/baselines/reference/typeFromPropertyAssignment26.symbols @@ -1,10 +1,10 @@ === tests/cases/conformance/salsa/bug24730.js === var UI = {} ->UI : Symbol(UI, Decl(bug24730.js, 0, 3), Decl(bug24730.js, 0, 11)) +>UI : Symbol(UI, Decl(bug24730.js, 0, 3), Decl(bug24730.js, 0, 11), Decl(bug24730.js, 5, 2)) UI.TreeElement = class { >UI.TreeElement : Symbol(UI.TreeElement, Decl(bug24730.js, 0, 11)) ->UI : Symbol(UI, Decl(bug24730.js, 0, 3), Decl(bug24730.js, 0, 11)) +>UI : Symbol(UI, Decl(bug24730.js, 0, 3), Decl(bug24730.js, 0, 11), Decl(bug24730.js, 5, 2)) >TreeElement : Symbol(UI.TreeElement, Decl(bug24730.js, 0, 11)) constructor() { @@ -16,16 +16,16 @@ UI.TreeElement = class { }; UI.context = new UI.TreeElement() >UI.context : Symbol(UI.context, Decl(bug24730.js, 5, 2)) ->UI : Symbol(UI, Decl(bug24730.js, 0, 3), Decl(bug24730.js, 0, 11)) +>UI : Symbol(UI, Decl(bug24730.js, 0, 3), Decl(bug24730.js, 0, 11), Decl(bug24730.js, 5, 2)) >context : Symbol(UI.context, Decl(bug24730.js, 5, 2)) >UI.TreeElement : Symbol(UI.TreeElement, Decl(bug24730.js, 0, 11)) ->UI : Symbol(UI, Decl(bug24730.js, 0, 3), Decl(bug24730.js, 0, 11)) +>UI : Symbol(UI, Decl(bug24730.js, 0, 3), Decl(bug24730.js, 0, 11), Decl(bug24730.js, 5, 2)) >TreeElement : Symbol(UI.TreeElement, Decl(bug24730.js, 0, 11)) class C extends UI.TreeElement { >C : Symbol(C, Decl(bug24730.js, 6, 33)) >UI.TreeElement : Symbol(UI.TreeElement, Decl(bug24730.js, 0, 11)) ->UI : Symbol(UI, Decl(bug24730.js, 0, 3), Decl(bug24730.js, 0, 11)) +>UI : Symbol(UI, Decl(bug24730.js, 0, 3), Decl(bug24730.js, 0, 11), Decl(bug24730.js, 5, 2)) >TreeElement : Symbol(UI.TreeElement, Decl(bug24730.js, 0, 11)) onpopulate() { diff --git a/tests/baselines/reference/typeFromPropertyAssignment29.symbols b/tests/baselines/reference/typeFromPropertyAssignment29.symbols index 8be54d3d87cc3..dd53b85df0061 100644 --- a/tests/baselines/reference/typeFromPropertyAssignment29.symbols +++ b/tests/baselines/reference/typeFromPropertyAssignment29.symbols @@ -1,6 +1,6 @@ === tests/cases/conformance/salsa/typeFromPropertyAssignment29.ts === function ExpandoDecl(n: number) { ->ExpandoDecl : Symbol(ExpandoDecl, Decl(typeFromPropertyAssignment29.ts, 0, 0), Decl(typeFromPropertyAssignment29.ts, 2, 1)) +>ExpandoDecl : Symbol(ExpandoDecl, Decl(typeFromPropertyAssignment29.ts, 0, 0), Decl(typeFromPropertyAssignment29.ts, 2, 1), Decl(typeFromPropertyAssignment29.ts, 3, 20)) >n : Symbol(n, Decl(typeFromPropertyAssignment29.ts, 0, 21)) return n.toString(); @@ -10,12 +10,12 @@ function ExpandoDecl(n: number) { } ExpandoDecl.prop = 2 >ExpandoDecl.prop : Symbol(ExpandoDecl.prop, Decl(typeFromPropertyAssignment29.ts, 2, 1)) ->ExpandoDecl : Symbol(ExpandoDecl, Decl(typeFromPropertyAssignment29.ts, 0, 0), Decl(typeFromPropertyAssignment29.ts, 2, 1)) +>ExpandoDecl : Symbol(ExpandoDecl, Decl(typeFromPropertyAssignment29.ts, 0, 0), Decl(typeFromPropertyAssignment29.ts, 2, 1), Decl(typeFromPropertyAssignment29.ts, 3, 20)) >prop : Symbol(ExpandoDecl.prop, Decl(typeFromPropertyAssignment29.ts, 2, 1)) ExpandoDecl.m = function(n: number) { >ExpandoDecl.m : Symbol(ExpandoDecl.m, Decl(typeFromPropertyAssignment29.ts, 3, 20)) ->ExpandoDecl : Symbol(ExpandoDecl, Decl(typeFromPropertyAssignment29.ts, 0, 0), Decl(typeFromPropertyAssignment29.ts, 2, 1)) +>ExpandoDecl : Symbol(ExpandoDecl, Decl(typeFromPropertyAssignment29.ts, 0, 0), Decl(typeFromPropertyAssignment29.ts, 2, 1), Decl(typeFromPropertyAssignment29.ts, 3, 20)) >m : Symbol(ExpandoDecl.m, Decl(typeFromPropertyAssignment29.ts, 3, 20)) >n : Symbol(n, Decl(typeFromPropertyAssignment29.ts, 4, 25)) @@ -25,17 +25,17 @@ ExpandoDecl.m = function(n: number) { var n = ExpandoDecl.prop + ExpandoDecl.m(12) + ExpandoDecl(101).length >n : Symbol(n, Decl(typeFromPropertyAssignment29.ts, 7, 3), Decl(typeFromPropertyAssignment29.ts, 17, 3), Decl(typeFromPropertyAssignment29.ts, 45, 3), Decl(typeFromPropertyAssignment29.ts, 63, 3), Decl(typeFromPropertyAssignment29.ts, 73, 3) ... and 1 more) >ExpandoDecl.prop : Symbol(ExpandoDecl.prop, Decl(typeFromPropertyAssignment29.ts, 2, 1)) ->ExpandoDecl : Symbol(ExpandoDecl, Decl(typeFromPropertyAssignment29.ts, 0, 0), Decl(typeFromPropertyAssignment29.ts, 2, 1)) +>ExpandoDecl : Symbol(ExpandoDecl, Decl(typeFromPropertyAssignment29.ts, 0, 0), Decl(typeFromPropertyAssignment29.ts, 2, 1), Decl(typeFromPropertyAssignment29.ts, 3, 20)) >prop : Symbol(ExpandoDecl.prop, Decl(typeFromPropertyAssignment29.ts, 2, 1)) >ExpandoDecl.m : Symbol(ExpandoDecl.m, Decl(typeFromPropertyAssignment29.ts, 3, 20)) ->ExpandoDecl : Symbol(ExpandoDecl, Decl(typeFromPropertyAssignment29.ts, 0, 0), Decl(typeFromPropertyAssignment29.ts, 2, 1)) +>ExpandoDecl : Symbol(ExpandoDecl, Decl(typeFromPropertyAssignment29.ts, 0, 0), Decl(typeFromPropertyAssignment29.ts, 2, 1), Decl(typeFromPropertyAssignment29.ts, 3, 20)) >m : Symbol(ExpandoDecl.m, Decl(typeFromPropertyAssignment29.ts, 3, 20)) >ExpandoDecl(101).length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) ->ExpandoDecl : Symbol(ExpandoDecl, Decl(typeFromPropertyAssignment29.ts, 0, 0), Decl(typeFromPropertyAssignment29.ts, 2, 1)) +>ExpandoDecl : Symbol(ExpandoDecl, Decl(typeFromPropertyAssignment29.ts, 0, 0), Decl(typeFromPropertyAssignment29.ts, 2, 1), Decl(typeFromPropertyAssignment29.ts, 3, 20)) >length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) const ExpandoExpr = function (n: number) { ->ExpandoExpr : Symbol(ExpandoExpr, Decl(typeFromPropertyAssignment29.ts, 9, 5), Decl(typeFromPropertyAssignment29.ts, 11, 1)) +>ExpandoExpr : Symbol(ExpandoExpr, Decl(typeFromPropertyAssignment29.ts, 9, 5), Decl(typeFromPropertyAssignment29.ts, 11, 1), Decl(typeFromPropertyAssignment29.ts, 12, 27), Decl(typeFromPropertyAssignment29.ts, 13, 28)) >n : Symbol(n, Decl(typeFromPropertyAssignment29.ts, 9, 30)) return n.toString(); @@ -45,19 +45,19 @@ const ExpandoExpr = function (n: number) { } ExpandoExpr.prop = { x: 2 } >ExpandoExpr.prop : Symbol(ExpandoExpr.prop, Decl(typeFromPropertyAssignment29.ts, 11, 1), Decl(typeFromPropertyAssignment29.ts, 12, 27)) ->ExpandoExpr : Symbol(ExpandoExpr, Decl(typeFromPropertyAssignment29.ts, 9, 5), Decl(typeFromPropertyAssignment29.ts, 11, 1)) +>ExpandoExpr : Symbol(ExpandoExpr, Decl(typeFromPropertyAssignment29.ts, 9, 5), Decl(typeFromPropertyAssignment29.ts, 11, 1), Decl(typeFromPropertyAssignment29.ts, 12, 27), Decl(typeFromPropertyAssignment29.ts, 13, 28)) >prop : Symbol(ExpandoExpr.prop, Decl(typeFromPropertyAssignment29.ts, 11, 1), Decl(typeFromPropertyAssignment29.ts, 12, 27)) >x : Symbol(x, Decl(typeFromPropertyAssignment29.ts, 12, 20)) ExpandoExpr.prop = { y: "" } >ExpandoExpr.prop : Symbol(ExpandoExpr.prop, Decl(typeFromPropertyAssignment29.ts, 11, 1), Decl(typeFromPropertyAssignment29.ts, 12, 27)) ->ExpandoExpr : Symbol(ExpandoExpr, Decl(typeFromPropertyAssignment29.ts, 9, 5), Decl(typeFromPropertyAssignment29.ts, 11, 1)) +>ExpandoExpr : Symbol(ExpandoExpr, Decl(typeFromPropertyAssignment29.ts, 9, 5), Decl(typeFromPropertyAssignment29.ts, 11, 1), Decl(typeFromPropertyAssignment29.ts, 12, 27), Decl(typeFromPropertyAssignment29.ts, 13, 28)) >prop : Symbol(ExpandoExpr.prop, Decl(typeFromPropertyAssignment29.ts, 11, 1), Decl(typeFromPropertyAssignment29.ts, 12, 27)) >y : Symbol(y, Decl(typeFromPropertyAssignment29.ts, 13, 20)) ExpandoExpr.m = function(n: number) { >ExpandoExpr.m : Symbol(ExpandoExpr.m, Decl(typeFromPropertyAssignment29.ts, 13, 28)) ->ExpandoExpr : Symbol(ExpandoExpr, Decl(typeFromPropertyAssignment29.ts, 9, 5), Decl(typeFromPropertyAssignment29.ts, 11, 1)) +>ExpandoExpr : Symbol(ExpandoExpr, Decl(typeFromPropertyAssignment29.ts, 9, 5), Decl(typeFromPropertyAssignment29.ts, 11, 1), Decl(typeFromPropertyAssignment29.ts, 12, 27), Decl(typeFromPropertyAssignment29.ts, 13, 28)) >m : Symbol(ExpandoExpr.m, Decl(typeFromPropertyAssignment29.ts, 13, 28)) >n : Symbol(n, Decl(typeFromPropertyAssignment29.ts, 14, 25)) @@ -68,18 +68,18 @@ var n = (ExpandoExpr.prop.x || 0) + ExpandoExpr.m(12) + ExpandoExpr(101).length >n : Symbol(n, Decl(typeFromPropertyAssignment29.ts, 7, 3), Decl(typeFromPropertyAssignment29.ts, 17, 3), Decl(typeFromPropertyAssignment29.ts, 45, 3), Decl(typeFromPropertyAssignment29.ts, 63, 3), Decl(typeFromPropertyAssignment29.ts, 73, 3) ... and 1 more) >ExpandoExpr.prop.x : Symbol(x, Decl(typeFromPropertyAssignment29.ts, 12, 20)) >ExpandoExpr.prop : Symbol(ExpandoExpr.prop, Decl(typeFromPropertyAssignment29.ts, 11, 1), Decl(typeFromPropertyAssignment29.ts, 12, 27)) ->ExpandoExpr : Symbol(ExpandoExpr, Decl(typeFromPropertyAssignment29.ts, 9, 5), Decl(typeFromPropertyAssignment29.ts, 11, 1)) +>ExpandoExpr : Symbol(ExpandoExpr, Decl(typeFromPropertyAssignment29.ts, 9, 5), Decl(typeFromPropertyAssignment29.ts, 11, 1), Decl(typeFromPropertyAssignment29.ts, 12, 27), Decl(typeFromPropertyAssignment29.ts, 13, 28)) >prop : Symbol(ExpandoExpr.prop, Decl(typeFromPropertyAssignment29.ts, 11, 1), Decl(typeFromPropertyAssignment29.ts, 12, 27)) >x : Symbol(x, Decl(typeFromPropertyAssignment29.ts, 12, 20)) >ExpandoExpr.m : Symbol(ExpandoExpr.m, Decl(typeFromPropertyAssignment29.ts, 13, 28)) ->ExpandoExpr : Symbol(ExpandoExpr, Decl(typeFromPropertyAssignment29.ts, 9, 5), Decl(typeFromPropertyAssignment29.ts, 11, 1)) +>ExpandoExpr : Symbol(ExpandoExpr, Decl(typeFromPropertyAssignment29.ts, 9, 5), Decl(typeFromPropertyAssignment29.ts, 11, 1), Decl(typeFromPropertyAssignment29.ts, 12, 27), Decl(typeFromPropertyAssignment29.ts, 13, 28)) >m : Symbol(ExpandoExpr.m, Decl(typeFromPropertyAssignment29.ts, 13, 28)) >ExpandoExpr(101).length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) ->ExpandoExpr : Symbol(ExpandoExpr, Decl(typeFromPropertyAssignment29.ts, 9, 5), Decl(typeFromPropertyAssignment29.ts, 11, 1)) +>ExpandoExpr : Symbol(ExpandoExpr, Decl(typeFromPropertyAssignment29.ts, 9, 5), Decl(typeFromPropertyAssignment29.ts, 11, 1), Decl(typeFromPropertyAssignment29.ts, 12, 27), Decl(typeFromPropertyAssignment29.ts, 13, 28)) >length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) const ExpandoArrow = (n: number) => n.toString(); ->ExpandoArrow : Symbol(ExpandoArrow, Decl(typeFromPropertyAssignment29.ts, 19, 5), Decl(typeFromPropertyAssignment29.ts, 19, 49)) +>ExpandoArrow : Symbol(ExpandoArrow, Decl(typeFromPropertyAssignment29.ts, 19, 5), Decl(typeFromPropertyAssignment29.ts, 19, 49), Decl(typeFromPropertyAssignment29.ts, 20, 21)) >n : Symbol(n, Decl(typeFromPropertyAssignment29.ts, 19, 22)) >n.toString : Symbol(Number.toString, Decl(lib.es5.d.ts, --, --)) >n : Symbol(n, Decl(typeFromPropertyAssignment29.ts, 19, 22)) @@ -87,12 +87,12 @@ const ExpandoArrow = (n: number) => n.toString(); ExpandoArrow.prop = 2 >ExpandoArrow.prop : Symbol(ExpandoArrow.prop, Decl(typeFromPropertyAssignment29.ts, 19, 49)) ->ExpandoArrow : Symbol(ExpandoArrow, Decl(typeFromPropertyAssignment29.ts, 19, 5), Decl(typeFromPropertyAssignment29.ts, 19, 49)) +>ExpandoArrow : Symbol(ExpandoArrow, Decl(typeFromPropertyAssignment29.ts, 19, 5), Decl(typeFromPropertyAssignment29.ts, 19, 49), Decl(typeFromPropertyAssignment29.ts, 20, 21)) >prop : Symbol(ExpandoArrow.prop, Decl(typeFromPropertyAssignment29.ts, 19, 49)) ExpandoArrow.m = function(n: number) { >ExpandoArrow.m : Symbol(ExpandoArrow.m, Decl(typeFromPropertyAssignment29.ts, 20, 21)) ->ExpandoArrow : Symbol(ExpandoArrow, Decl(typeFromPropertyAssignment29.ts, 19, 5), Decl(typeFromPropertyAssignment29.ts, 19, 49)) +>ExpandoArrow : Symbol(ExpandoArrow, Decl(typeFromPropertyAssignment29.ts, 19, 5), Decl(typeFromPropertyAssignment29.ts, 19, 49), Decl(typeFromPropertyAssignment29.ts, 20, 21)) >m : Symbol(ExpandoArrow.m, Decl(typeFromPropertyAssignment29.ts, 20, 21)) >n : Symbol(n, Decl(typeFromPropertyAssignment29.ts, 21, 26)) @@ -186,7 +186,7 @@ namespace Ns { // Should not work in Typescript -- must be const var ExpandoExpr2 = function (n: number) { ->ExpandoExpr2 : Symbol(ExpandoExpr2, Decl(typeFromPropertyAssignment29.ts, 56, 3), Decl(typeFromPropertyAssignment29.ts, 58, 1)) +>ExpandoExpr2 : Symbol(ExpandoExpr2, Decl(typeFromPropertyAssignment29.ts, 56, 3), Decl(typeFromPropertyAssignment29.ts, 58, 1), Decl(typeFromPropertyAssignment29.ts, 59, 21)) >n : Symbol(n, Decl(typeFromPropertyAssignment29.ts, 56, 29)) return n.toString(); @@ -195,10 +195,10 @@ var ExpandoExpr2 = function (n: number) { >toString : Symbol(Number.toString, Decl(lib.es5.d.ts, --, --)) } ExpandoExpr2.prop = 2 ->ExpandoExpr2 : Symbol(ExpandoExpr2, Decl(typeFromPropertyAssignment29.ts, 56, 3), Decl(typeFromPropertyAssignment29.ts, 58, 1)) +>ExpandoExpr2 : Symbol(ExpandoExpr2, Decl(typeFromPropertyAssignment29.ts, 56, 3), Decl(typeFromPropertyAssignment29.ts, 58, 1), Decl(typeFromPropertyAssignment29.ts, 59, 21)) ExpandoExpr2.m = function(n: number) { ->ExpandoExpr2 : Symbol(ExpandoExpr2, Decl(typeFromPropertyAssignment29.ts, 56, 3), Decl(typeFromPropertyAssignment29.ts, 58, 1)) +>ExpandoExpr2 : Symbol(ExpandoExpr2, Decl(typeFromPropertyAssignment29.ts, 56, 3), Decl(typeFromPropertyAssignment29.ts, 58, 1), Decl(typeFromPropertyAssignment29.ts, 59, 21)) >n : Symbol(n, Decl(typeFromPropertyAssignment29.ts, 60, 26)) return n + 1; @@ -206,10 +206,10 @@ ExpandoExpr2.m = function(n: number) { } var n = ExpandoExpr2.prop + ExpandoExpr2.m(12) + ExpandoExpr2(101).length >n : Symbol(n, Decl(typeFromPropertyAssignment29.ts, 7, 3), Decl(typeFromPropertyAssignment29.ts, 17, 3), Decl(typeFromPropertyAssignment29.ts, 45, 3), Decl(typeFromPropertyAssignment29.ts, 63, 3), Decl(typeFromPropertyAssignment29.ts, 73, 3) ... and 1 more) ->ExpandoExpr2 : Symbol(ExpandoExpr2, Decl(typeFromPropertyAssignment29.ts, 56, 3), Decl(typeFromPropertyAssignment29.ts, 58, 1)) ->ExpandoExpr2 : Symbol(ExpandoExpr2, Decl(typeFromPropertyAssignment29.ts, 56, 3), Decl(typeFromPropertyAssignment29.ts, 58, 1)) +>ExpandoExpr2 : Symbol(ExpandoExpr2, Decl(typeFromPropertyAssignment29.ts, 56, 3), Decl(typeFromPropertyAssignment29.ts, 58, 1), Decl(typeFromPropertyAssignment29.ts, 59, 21)) +>ExpandoExpr2 : Symbol(ExpandoExpr2, Decl(typeFromPropertyAssignment29.ts, 56, 3), Decl(typeFromPropertyAssignment29.ts, 58, 1), Decl(typeFromPropertyAssignment29.ts, 59, 21)) >ExpandoExpr2(101).length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) ->ExpandoExpr2 : Symbol(ExpandoExpr2, Decl(typeFromPropertyAssignment29.ts, 56, 3), Decl(typeFromPropertyAssignment29.ts, 58, 1)) +>ExpandoExpr2 : Symbol(ExpandoExpr2, Decl(typeFromPropertyAssignment29.ts, 56, 3), Decl(typeFromPropertyAssignment29.ts, 58, 1), Decl(typeFromPropertyAssignment29.ts, 59, 21)) >length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) // Should not work in typescript -- classes already have statics diff --git a/tests/baselines/reference/typeFromPropertyAssignment31.symbols b/tests/baselines/reference/typeFromPropertyAssignment31.symbols index 5a20510a739eb..48a2460cc8b52 100644 --- a/tests/baselines/reference/typeFromPropertyAssignment31.symbols +++ b/tests/baselines/reference/typeFromPropertyAssignment31.symbols @@ -1,6 +1,6 @@ === tests/cases/conformance/salsa/typeFromPropertyAssignment31.ts === function ExpandoMerge(n: number) { ->ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 12, 24)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 3, 21), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 9, 1) ... and 6 more) >n : Symbol(n, Decl(typeFromPropertyAssignment31.ts, 0, 22)) return n; @@ -8,12 +8,12 @@ function ExpandoMerge(n: number) { } ExpandoMerge.p1 = 111 >ExpandoMerge.p1 : Symbol(ExpandoMerge.p1, Decl(typeFromPropertyAssignment31.ts, 2, 1)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 12, 24)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 3, 21), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 9, 1) ... and 6 more) >p1 : Symbol(ExpandoMerge.p1, Decl(typeFromPropertyAssignment31.ts, 2, 1)) ExpandoMerge.m = function(n: number) { >ExpandoMerge.m : Symbol(ExpandoMerge.m, Decl(typeFromPropertyAssignment31.ts, 3, 21)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 12, 24)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 3, 21), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 9, 1) ... and 6 more) >m : Symbol(ExpandoMerge.m, Decl(typeFromPropertyAssignment31.ts, 3, 21)) >n : Symbol(n, Decl(typeFromPropertyAssignment31.ts, 4, 26)) @@ -21,28 +21,28 @@ ExpandoMerge.m = function(n: number) { >n : Symbol(n, Decl(typeFromPropertyAssignment31.ts, 4, 26)) } namespace ExpandoMerge { ->ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 12, 24)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 3, 21), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 9, 1) ... and 6 more) export var p2 = 222; >p2 : Symbol(p2, Decl(typeFromPropertyAssignment31.ts, 8, 14)) } ExpandoMerge.p4 = 44444; // ok >ExpandoMerge.p4 : Symbol(ExpandoMerge.p4, Decl(typeFromPropertyAssignment31.ts, 9, 1), Decl(typeFromPropertyAssignment31.ts, 15, 14)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 12, 24)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 3, 21), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 9, 1) ... and 6 more) >p4 : Symbol(ExpandoMerge.p4, Decl(typeFromPropertyAssignment31.ts, 9, 1), Decl(typeFromPropertyAssignment31.ts, 15, 14)) ExpandoMerge.p6 = 66666; // ok >ExpandoMerge.p6 : Symbol(ExpandoMerge.p6, Decl(typeFromPropertyAssignment31.ts, 10, 24), Decl(typeFromPropertyAssignment31.ts, 17, 14)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 12, 24)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 3, 21), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 9, 1) ... and 6 more) >p6 : Symbol(ExpandoMerge.p6, Decl(typeFromPropertyAssignment31.ts, 10, 24), Decl(typeFromPropertyAssignment31.ts, 17, 14)) ExpandoMerge.p8 = false; // type error >ExpandoMerge.p8 : Symbol(ExpandoMerge.p8, Decl(typeFromPropertyAssignment31.ts, 11, 24), Decl(typeFromPropertyAssignment31.ts, 19, 14)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 12, 24)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 3, 21), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 9, 1) ... and 6 more) >p8 : Symbol(ExpandoMerge.p8, Decl(typeFromPropertyAssignment31.ts, 11, 24), Decl(typeFromPropertyAssignment31.ts, 19, 14)) namespace ExpandoMerge { ->ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 12, 24)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 3, 21), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 9, 1) ... and 6 more) export var p3 = 333; >p3 : Symbol(p3, Decl(typeFromPropertyAssignment31.ts, 14, 14)) @@ -67,50 +67,50 @@ namespace ExpandoMerge { } ExpandoMerge.p5 = 555555; // ok >ExpandoMerge.p5 : Symbol(ExpandoMerge.p5, Decl(typeFromPropertyAssignment31.ts, 16, 14), Decl(typeFromPropertyAssignment31.ts, 21, 1)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 12, 24)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 3, 21), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 9, 1) ... and 6 more) >p5 : Symbol(ExpandoMerge.p5, Decl(typeFromPropertyAssignment31.ts, 16, 14), Decl(typeFromPropertyAssignment31.ts, 21, 1)) ExpandoMerge.p7 = 777777; // ok >ExpandoMerge.p7 : Symbol(ExpandoMerge.p7, Decl(typeFromPropertyAssignment31.ts, 18, 14), Decl(typeFromPropertyAssignment31.ts, 22, 25)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 12, 24)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 3, 21), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 9, 1) ... and 6 more) >p7 : Symbol(ExpandoMerge.p7, Decl(typeFromPropertyAssignment31.ts, 18, 14), Decl(typeFromPropertyAssignment31.ts, 22, 25)) ExpandoMerge.p9 = false; // type error >ExpandoMerge.p9 : Symbol(ExpandoMerge.p9, Decl(typeFromPropertyAssignment31.ts, 20, 14), Decl(typeFromPropertyAssignment31.ts, 23, 25)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 12, 24)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 3, 21), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 9, 1) ... and 6 more) >p9 : Symbol(ExpandoMerge.p9, Decl(typeFromPropertyAssignment31.ts, 20, 14), Decl(typeFromPropertyAssignment31.ts, 23, 25)) var n = ExpandoMerge.p1 + ExpandoMerge.p2 + ExpandoMerge.p3 + ExpandoMerge.p4 + ExpandoMerge.p5 + ExpandoMerge.p6 + ExpandoMerge.p7 + ExpandoMerge.p8 + ExpandoMerge.p9 + ExpandoMerge.m(12) + ExpandoMerge(1001); >n : Symbol(n, Decl(typeFromPropertyAssignment31.ts, 25, 3)) >ExpandoMerge.p1 : Symbol(ExpandoMerge.p1, Decl(typeFromPropertyAssignment31.ts, 2, 1)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 12, 24)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 3, 21), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 9, 1) ... and 6 more) >p1 : Symbol(ExpandoMerge.p1, Decl(typeFromPropertyAssignment31.ts, 2, 1)) >ExpandoMerge.p2 : Symbol(ExpandoMerge.p2, Decl(typeFromPropertyAssignment31.ts, 8, 14)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 12, 24)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 3, 21), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 9, 1) ... and 6 more) >p2 : Symbol(ExpandoMerge.p2, Decl(typeFromPropertyAssignment31.ts, 8, 14)) >ExpandoMerge.p3 : Symbol(ExpandoMerge.p3, Decl(typeFromPropertyAssignment31.ts, 14, 14)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 12, 24)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 3, 21), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 9, 1) ... and 6 more) >p3 : Symbol(ExpandoMerge.p3, Decl(typeFromPropertyAssignment31.ts, 14, 14)) >ExpandoMerge.p4 : Symbol(ExpandoMerge.p4, Decl(typeFromPropertyAssignment31.ts, 9, 1), Decl(typeFromPropertyAssignment31.ts, 15, 14)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 12, 24)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 3, 21), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 9, 1) ... and 6 more) >p4 : Symbol(ExpandoMerge.p4, Decl(typeFromPropertyAssignment31.ts, 9, 1), Decl(typeFromPropertyAssignment31.ts, 15, 14)) >ExpandoMerge.p5 : Symbol(ExpandoMerge.p5, Decl(typeFromPropertyAssignment31.ts, 16, 14), Decl(typeFromPropertyAssignment31.ts, 21, 1)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 12, 24)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 3, 21), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 9, 1) ... and 6 more) >p5 : Symbol(ExpandoMerge.p5, Decl(typeFromPropertyAssignment31.ts, 16, 14), Decl(typeFromPropertyAssignment31.ts, 21, 1)) >ExpandoMerge.p6 : Symbol(ExpandoMerge.p6, Decl(typeFromPropertyAssignment31.ts, 10, 24), Decl(typeFromPropertyAssignment31.ts, 17, 14)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 12, 24)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 3, 21), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 9, 1) ... and 6 more) >p6 : Symbol(ExpandoMerge.p6, Decl(typeFromPropertyAssignment31.ts, 10, 24), Decl(typeFromPropertyAssignment31.ts, 17, 14)) >ExpandoMerge.p7 : Symbol(ExpandoMerge.p7, Decl(typeFromPropertyAssignment31.ts, 18, 14), Decl(typeFromPropertyAssignment31.ts, 22, 25)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 12, 24)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 3, 21), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 9, 1) ... and 6 more) >p7 : Symbol(ExpandoMerge.p7, Decl(typeFromPropertyAssignment31.ts, 18, 14), Decl(typeFromPropertyAssignment31.ts, 22, 25)) >ExpandoMerge.p8 : Symbol(ExpandoMerge.p8, Decl(typeFromPropertyAssignment31.ts, 11, 24), Decl(typeFromPropertyAssignment31.ts, 19, 14)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 12, 24)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 3, 21), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 9, 1) ... and 6 more) >p8 : Symbol(ExpandoMerge.p8, Decl(typeFromPropertyAssignment31.ts, 11, 24), Decl(typeFromPropertyAssignment31.ts, 19, 14)) >ExpandoMerge.p9 : Symbol(ExpandoMerge.p9, Decl(typeFromPropertyAssignment31.ts, 20, 14), Decl(typeFromPropertyAssignment31.ts, 23, 25)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 12, 24)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 3, 21), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 9, 1) ... and 6 more) >p9 : Symbol(ExpandoMerge.p9, Decl(typeFromPropertyAssignment31.ts, 20, 14), Decl(typeFromPropertyAssignment31.ts, 23, 25)) >ExpandoMerge.m : Symbol(ExpandoMerge.m, Decl(typeFromPropertyAssignment31.ts, 3, 21)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 12, 24)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 3, 21), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 9, 1) ... and 6 more) >m : Symbol(ExpandoMerge.m, Decl(typeFromPropertyAssignment31.ts, 3, 21)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 12, 24)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(typeFromPropertyAssignment31.ts, 0, 0), Decl(typeFromPropertyAssignment31.ts, 2, 1), Decl(typeFromPropertyAssignment31.ts, 3, 21), Decl(typeFromPropertyAssignment31.ts, 6, 1), Decl(typeFromPropertyAssignment31.ts, 9, 1) ... and 6 more) diff --git a/tests/baselines/reference/typeFromPropertyAssignment32.symbols b/tests/baselines/reference/typeFromPropertyAssignment32.symbols index 0daec198f71ca..17e9367880e76 100644 --- a/tests/baselines/reference/typeFromPropertyAssignment32.symbols +++ b/tests/baselines/reference/typeFromPropertyAssignment32.symbols @@ -1,6 +1,6 @@ === tests/cases/conformance/salsa/expando.ts === function ExpandoMerge(n: number) { ->ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21), Decl(expando.ts, 6, 1), Decl(expando.ts, 7, 24) ... and 6 more) >n : Symbol(n, Decl(expando.ts, 0, 22)) return n; @@ -8,12 +8,12 @@ function ExpandoMerge(n: number) { } ExpandoMerge.p1 = 111 >ExpandoMerge.p1 : Symbol(ExpandoMerge.p1, Decl(expando.ts, 2, 1)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21), Decl(expando.ts, 6, 1), Decl(expando.ts, 7, 24) ... and 6 more) >p1 : Symbol(ExpandoMerge.p1, Decl(expando.ts, 2, 1)) ExpandoMerge.m = function(n: number) { >ExpandoMerge.m : Symbol(ExpandoMerge.m, Decl(expando.ts, 3, 21)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21), Decl(expando.ts, 6, 1), Decl(expando.ts, 7, 24) ... and 6 more) >m : Symbol(ExpandoMerge.m, Decl(expando.ts, 3, 21)) >n : Symbol(n, Decl(expando.ts, 4, 26)) @@ -22,71 +22,71 @@ ExpandoMerge.m = function(n: number) { } ExpandoMerge.p4 = 44444; >ExpandoMerge.p4 : Symbol(ExpandoMerge.p4, Decl(expando.ts, 6, 1), Decl(ns.ts, 2, 14)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21), Decl(expando.ts, 6, 1), Decl(expando.ts, 7, 24) ... and 6 more) >p4 : Symbol(ExpandoMerge.p4, Decl(expando.ts, 6, 1), Decl(ns.ts, 2, 14)) ExpandoMerge.p5 = 555555; >ExpandoMerge.p5 : Symbol(ExpandoMerge.p5, Decl(expando.ts, 7, 24), Decl(ns.ts, 3, 14)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21), Decl(expando.ts, 6, 1), Decl(expando.ts, 7, 24) ... and 6 more) >p5 : Symbol(ExpandoMerge.p5, Decl(expando.ts, 7, 24), Decl(ns.ts, 3, 14)) ExpandoMerge.p6 = 66666; >ExpandoMerge.p6 : Symbol(ExpandoMerge.p6, Decl(expando.ts, 8, 25), Decl(ns.ts, 4, 14)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21), Decl(expando.ts, 6, 1), Decl(expando.ts, 7, 24) ... and 6 more) >p6 : Symbol(ExpandoMerge.p6, Decl(expando.ts, 8, 25), Decl(ns.ts, 4, 14)) ExpandoMerge.p7 = 777777; >ExpandoMerge.p7 : Symbol(ExpandoMerge.p7, Decl(expando.ts, 9, 24), Decl(ns.ts, 5, 14)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21), Decl(expando.ts, 6, 1), Decl(expando.ts, 7, 24) ... and 6 more) >p7 : Symbol(ExpandoMerge.p7, Decl(expando.ts, 9, 24), Decl(ns.ts, 5, 14)) ExpandoMerge.p8 = false; // type error >ExpandoMerge.p8 : Symbol(ExpandoMerge.p8, Decl(expando.ts, 10, 25), Decl(ns.ts, 6, 14)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21), Decl(expando.ts, 6, 1), Decl(expando.ts, 7, 24) ... and 6 more) >p8 : Symbol(ExpandoMerge.p8, Decl(expando.ts, 10, 25), Decl(ns.ts, 6, 14)) ExpandoMerge.p9 = false; // type error >ExpandoMerge.p9 : Symbol(ExpandoMerge.p9, Decl(expando.ts, 11, 24), Decl(ns.ts, 7, 14)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21), Decl(expando.ts, 6, 1), Decl(expando.ts, 7, 24) ... and 6 more) >p9 : Symbol(ExpandoMerge.p9, Decl(expando.ts, 11, 24), Decl(ns.ts, 7, 14)) var n = ExpandoMerge.p1 + ExpandoMerge.p2 + ExpandoMerge.p3 + ExpandoMerge.p4 + ExpandoMerge.p5 + ExpandoMerge.p6 + ExpandoMerge.p7 + ExpandoMerge.p8 + ExpandoMerge.p9 + ExpandoMerge.m(12) + ExpandoMerge(1001); >n : Symbol(n, Decl(expando.ts, 13, 3)) >ExpandoMerge.p1 : Symbol(ExpandoMerge.p1, Decl(expando.ts, 2, 1)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21), Decl(expando.ts, 6, 1), Decl(expando.ts, 7, 24) ... and 6 more) >p1 : Symbol(ExpandoMerge.p1, Decl(expando.ts, 2, 1)) >ExpandoMerge.p2 : Symbol(ExpandoMerge.p2, Decl(ns.ts, 10, 14)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21), Decl(expando.ts, 6, 1), Decl(expando.ts, 7, 24) ... and 6 more) >p2 : Symbol(ExpandoMerge.p2, Decl(ns.ts, 10, 14)) >ExpandoMerge.p3 : Symbol(ExpandoMerge.p3, Decl(ns.ts, 1, 14)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21), Decl(expando.ts, 6, 1), Decl(expando.ts, 7, 24) ... and 6 more) >p3 : Symbol(ExpandoMerge.p3, Decl(ns.ts, 1, 14)) >ExpandoMerge.p4 : Symbol(ExpandoMerge.p4, Decl(expando.ts, 6, 1), Decl(ns.ts, 2, 14)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21), Decl(expando.ts, 6, 1), Decl(expando.ts, 7, 24) ... and 6 more) >p4 : Symbol(ExpandoMerge.p4, Decl(expando.ts, 6, 1), Decl(ns.ts, 2, 14)) >ExpandoMerge.p5 : Symbol(ExpandoMerge.p5, Decl(expando.ts, 7, 24), Decl(ns.ts, 3, 14)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21), Decl(expando.ts, 6, 1), Decl(expando.ts, 7, 24) ... and 6 more) >p5 : Symbol(ExpandoMerge.p5, Decl(expando.ts, 7, 24), Decl(ns.ts, 3, 14)) >ExpandoMerge.p6 : Symbol(ExpandoMerge.p6, Decl(expando.ts, 8, 25), Decl(ns.ts, 4, 14)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21), Decl(expando.ts, 6, 1), Decl(expando.ts, 7, 24) ... and 6 more) >p6 : Symbol(ExpandoMerge.p6, Decl(expando.ts, 8, 25), Decl(ns.ts, 4, 14)) >ExpandoMerge.p7 : Symbol(ExpandoMerge.p7, Decl(expando.ts, 9, 24), Decl(ns.ts, 5, 14)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21), Decl(expando.ts, 6, 1), Decl(expando.ts, 7, 24) ... and 6 more) >p7 : Symbol(ExpandoMerge.p7, Decl(expando.ts, 9, 24), Decl(ns.ts, 5, 14)) >ExpandoMerge.p8 : Symbol(ExpandoMerge.p8, Decl(expando.ts, 10, 25), Decl(ns.ts, 6, 14)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21), Decl(expando.ts, 6, 1), Decl(expando.ts, 7, 24) ... and 6 more) >p8 : Symbol(ExpandoMerge.p8, Decl(expando.ts, 10, 25), Decl(ns.ts, 6, 14)) >ExpandoMerge.p9 : Symbol(ExpandoMerge.p9, Decl(expando.ts, 11, 24), Decl(ns.ts, 7, 14)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21), Decl(expando.ts, 6, 1), Decl(expando.ts, 7, 24) ... and 6 more) >p9 : Symbol(ExpandoMerge.p9, Decl(expando.ts, 11, 24), Decl(ns.ts, 7, 14)) >ExpandoMerge.m : Symbol(ExpandoMerge.m, Decl(expando.ts, 3, 21)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21), Decl(expando.ts, 6, 1), Decl(expando.ts, 7, 24) ... and 6 more) >m : Symbol(ExpandoMerge.m, Decl(expando.ts, 3, 21)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21), Decl(expando.ts, 6, 1), Decl(expando.ts, 7, 24) ... and 6 more) === tests/cases/conformance/salsa/ns.ts === namespace ExpandoMerge { ->ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21), Decl(expando.ts, 6, 1), Decl(expando.ts, 7, 24) ... and 6 more) export var p3 = 333; >p3 : Symbol(p3, Decl(ns.ts, 1, 14)) @@ -110,7 +110,7 @@ namespace ExpandoMerge { >p9 : Symbol(p9, Decl(expando.ts, 11, 24), Decl(ns.ts, 7, 14)) } namespace ExpandoMerge { ->ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21), Decl(expando.ts, 6, 1), Decl(expando.ts, 7, 24) ... and 6 more) export var p2 = 222; >p2 : Symbol(p2, Decl(ns.ts, 10, 14)) diff --git a/tests/baselines/reference/typeFromPropertyAssignment33.symbols b/tests/baselines/reference/typeFromPropertyAssignment33.symbols index 2bdaebbbfdda0..23f7277ff547e 100644 --- a/tests/baselines/reference/typeFromPropertyAssignment33.symbols +++ b/tests/baselines/reference/typeFromPropertyAssignment33.symbols @@ -1,6 +1,6 @@ === tests/cases/conformance/salsa/ns.ts === namespace ExpandoMerge { ->ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21) ... and 6 more) export var p3 = 333; >p3 : Symbol(p3, Decl(ns.ts, 1, 14)) @@ -24,7 +24,7 @@ namespace ExpandoMerge { >p9 : Symbol(p9, Decl(ns.ts, 7, 14), Decl(expando.ts, 11, 24)) } namespace ExpandoMerge { ->ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21) ... and 6 more) export var p2 = 222; >p2 : Symbol(p2, Decl(ns.ts, 10, 14)) @@ -33,7 +33,7 @@ namespace ExpandoMerge { === tests/cases/conformance/salsa/expando.ts === function ExpandoMerge(n: number) { ->ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21) ... and 6 more) >n : Symbol(n, Decl(expando.ts, 0, 22)) return n; @@ -41,12 +41,12 @@ function ExpandoMerge(n: number) { } ExpandoMerge.p1 = 111 >ExpandoMerge.p1 : Symbol(ExpandoMerge.p1, Decl(expando.ts, 2, 1)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21) ... and 6 more) >p1 : Symbol(ExpandoMerge.p1, Decl(expando.ts, 2, 1)) ExpandoMerge.m = function(n: number) { >ExpandoMerge.m : Symbol(ExpandoMerge.m, Decl(expando.ts, 3, 21)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21) ... and 6 more) >m : Symbol(ExpandoMerge.m, Decl(expando.ts, 3, 21)) >n : Symbol(n, Decl(expando.ts, 4, 26)) @@ -55,66 +55,66 @@ ExpandoMerge.m = function(n: number) { } ExpandoMerge.p4 = 44444; >ExpandoMerge.p4 : Symbol(ExpandoMerge.p4, Decl(ns.ts, 2, 14), Decl(expando.ts, 6, 1)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21) ... and 6 more) >p4 : Symbol(ExpandoMerge.p4, Decl(ns.ts, 2, 14), Decl(expando.ts, 6, 1)) ExpandoMerge.p5 = 555555; >ExpandoMerge.p5 : Symbol(ExpandoMerge.p5, Decl(ns.ts, 3, 14), Decl(expando.ts, 7, 24)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21) ... and 6 more) >p5 : Symbol(ExpandoMerge.p5, Decl(ns.ts, 3, 14), Decl(expando.ts, 7, 24)) ExpandoMerge.p6 = 66666; >ExpandoMerge.p6 : Symbol(ExpandoMerge.p6, Decl(ns.ts, 4, 14), Decl(expando.ts, 8, 25)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21) ... and 6 more) >p6 : Symbol(ExpandoMerge.p6, Decl(ns.ts, 4, 14), Decl(expando.ts, 8, 25)) ExpandoMerge.p7 = 777777; >ExpandoMerge.p7 : Symbol(ExpandoMerge.p7, Decl(ns.ts, 5, 14), Decl(expando.ts, 9, 24)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21) ... and 6 more) >p7 : Symbol(ExpandoMerge.p7, Decl(ns.ts, 5, 14), Decl(expando.ts, 9, 24)) ExpandoMerge.p8 = false; // type error >ExpandoMerge.p8 : Symbol(ExpandoMerge.p8, Decl(ns.ts, 6, 14), Decl(expando.ts, 10, 25)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21) ... and 6 more) >p8 : Symbol(ExpandoMerge.p8, Decl(ns.ts, 6, 14), Decl(expando.ts, 10, 25)) ExpandoMerge.p9 = false; // type error >ExpandoMerge.p9 : Symbol(ExpandoMerge.p9, Decl(ns.ts, 7, 14), Decl(expando.ts, 11, 24)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21) ... and 6 more) >p9 : Symbol(ExpandoMerge.p9, Decl(ns.ts, 7, 14), Decl(expando.ts, 11, 24)) var n = ExpandoMerge.p1 + ExpandoMerge.p2 + ExpandoMerge.p3 + ExpandoMerge.p4 + ExpandoMerge.p5 + ExpandoMerge.p6 + ExpandoMerge.p7 + ExpandoMerge.p8 + ExpandoMerge.p9 + ExpandoMerge.m(12) + ExpandoMerge(1001); >n : Symbol(n, Decl(expando.ts, 13, 3)) >ExpandoMerge.p1 : Symbol(ExpandoMerge.p1, Decl(expando.ts, 2, 1)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21) ... and 6 more) >p1 : Symbol(ExpandoMerge.p1, Decl(expando.ts, 2, 1)) >ExpandoMerge.p2 : Symbol(ExpandoMerge.p2, Decl(ns.ts, 10, 14)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21) ... and 6 more) >p2 : Symbol(ExpandoMerge.p2, Decl(ns.ts, 10, 14)) >ExpandoMerge.p3 : Symbol(ExpandoMerge.p3, Decl(ns.ts, 1, 14)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21) ... and 6 more) >p3 : Symbol(ExpandoMerge.p3, Decl(ns.ts, 1, 14)) >ExpandoMerge.p4 : Symbol(ExpandoMerge.p4, Decl(ns.ts, 2, 14), Decl(expando.ts, 6, 1)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21) ... and 6 more) >p4 : Symbol(ExpandoMerge.p4, Decl(ns.ts, 2, 14), Decl(expando.ts, 6, 1)) >ExpandoMerge.p5 : Symbol(ExpandoMerge.p5, Decl(ns.ts, 3, 14), Decl(expando.ts, 7, 24)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21) ... and 6 more) >p5 : Symbol(ExpandoMerge.p5, Decl(ns.ts, 3, 14), Decl(expando.ts, 7, 24)) >ExpandoMerge.p6 : Symbol(ExpandoMerge.p6, Decl(ns.ts, 4, 14), Decl(expando.ts, 8, 25)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21) ... and 6 more) >p6 : Symbol(ExpandoMerge.p6, Decl(ns.ts, 4, 14), Decl(expando.ts, 8, 25)) >ExpandoMerge.p7 : Symbol(ExpandoMerge.p7, Decl(ns.ts, 5, 14), Decl(expando.ts, 9, 24)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21) ... and 6 more) >p7 : Symbol(ExpandoMerge.p7, Decl(ns.ts, 5, 14), Decl(expando.ts, 9, 24)) >ExpandoMerge.p8 : Symbol(ExpandoMerge.p8, Decl(ns.ts, 6, 14), Decl(expando.ts, 10, 25)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21) ... and 6 more) >p8 : Symbol(ExpandoMerge.p8, Decl(ns.ts, 6, 14), Decl(expando.ts, 10, 25)) >ExpandoMerge.p9 : Symbol(ExpandoMerge.p9, Decl(ns.ts, 7, 14), Decl(expando.ts, 11, 24)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21) ... and 6 more) >p9 : Symbol(ExpandoMerge.p9, Decl(ns.ts, 7, 14), Decl(expando.ts, 11, 24)) >ExpandoMerge.m : Symbol(ExpandoMerge.m, Decl(expando.ts, 3, 21)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21) ... and 6 more) >m : Symbol(ExpandoMerge.m, Decl(expando.ts, 3, 21)) ->ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1)) +>ExpandoMerge : Symbol(ExpandoMerge, Decl(ns.ts, 0, 0), Decl(ns.ts, 8, 1), Decl(expando.ts, 0, 0), Decl(expando.ts, 2, 1), Decl(expando.ts, 3, 21) ... and 6 more) diff --git a/tests/baselines/reference/typeFromPropertyAssignment34.symbols b/tests/baselines/reference/typeFromPropertyAssignment34.symbols index fb9984c1a870b..0c8be1b8df88a 100644 --- a/tests/baselines/reference/typeFromPropertyAssignment34.symbols +++ b/tests/baselines/reference/typeFromPropertyAssignment34.symbols @@ -1,24 +1,24 @@ === tests/cases/conformance/salsa/file1.js === var N = {}; ->N : Symbol(N, Decl(file1.js, 0, 3), Decl(file1.js, 0, 11), Decl(file2.js, 0, 0)) +>N : Symbol(N, Decl(file1.js, 0, 3), Decl(file1.js, 0, 11), Decl(file2.js, 0, 0), Decl(file2.js, 0, 19)) N.commands = {}; ->N.commands : Symbol(N.commands, Decl(file1.js, 0, 11), Decl(file2.js, 0, 2)) ->N : Symbol(N, Decl(file1.js, 0, 3), Decl(file1.js, 0, 11), Decl(file2.js, 0, 0)) ->commands : Symbol(N.commands, Decl(file1.js, 0, 11), Decl(file2.js, 0, 2)) +>N.commands : Symbol(N.commands, Decl(file1.js, 0, 11), Decl(file2.js, 0, 2), Decl(file2.js, 1, 2)) +>N : Symbol(N, Decl(file1.js, 0, 3), Decl(file1.js, 0, 11), Decl(file2.js, 0, 0), Decl(file2.js, 0, 19)) +>commands : Symbol(N.commands, Decl(file1.js, 0, 11), Decl(file2.js, 0, 2), Decl(file2.js, 1, 2)) === tests/cases/conformance/salsa/file2.js === N.commands.a = 111; >N.commands.a : Symbol(N.commands.a, Decl(file2.js, 0, 0)) ->N.commands : Symbol(N.commands, Decl(file1.js, 0, 11), Decl(file2.js, 0, 2)) ->N : Symbol(N, Decl(file1.js, 0, 3), Decl(file1.js, 0, 11), Decl(file2.js, 0, 0)) ->commands : Symbol(N.commands, Decl(file1.js, 0, 11), Decl(file2.js, 0, 2)) +>N.commands : Symbol(N.commands, Decl(file1.js, 0, 11), Decl(file2.js, 0, 2), Decl(file2.js, 1, 2)) +>N : Symbol(N, Decl(file1.js, 0, 3), Decl(file1.js, 0, 11), Decl(file2.js, 0, 0), Decl(file2.js, 0, 19)) +>commands : Symbol(N.commands, Decl(file1.js, 0, 11), Decl(file2.js, 0, 2), Decl(file2.js, 1, 2)) >a : Symbol(N.commands.a, Decl(file2.js, 0, 0)) N.commands.b = function () { }; >N.commands.b : Symbol(N.commands.b, Decl(file2.js, 0, 19)) ->N.commands : Symbol(N.commands, Decl(file1.js, 0, 11), Decl(file2.js, 0, 2)) ->N : Symbol(N, Decl(file1.js, 0, 3), Decl(file1.js, 0, 11), Decl(file2.js, 0, 0)) ->commands : Symbol(N.commands, Decl(file1.js, 0, 11), Decl(file2.js, 0, 2)) +>N.commands : Symbol(N.commands, Decl(file1.js, 0, 11), Decl(file2.js, 0, 2), Decl(file2.js, 1, 2)) +>N : Symbol(N, Decl(file1.js, 0, 3), Decl(file1.js, 0, 11), Decl(file2.js, 0, 0), Decl(file2.js, 0, 19)) +>commands : Symbol(N.commands, Decl(file1.js, 0, 11), Decl(file2.js, 0, 2), Decl(file2.js, 1, 2)) >b : Symbol(N.commands.b, Decl(file2.js, 0, 19)) diff --git a/tests/baselines/reference/typeFromPropertyAssignment6.symbols b/tests/baselines/reference/typeFromPropertyAssignment6.symbols index 0868a599cde28..fa5248fd13cf0 100644 --- a/tests/baselines/reference/typeFromPropertyAssignment6.symbols +++ b/tests/baselines/reference/typeFromPropertyAssignment6.symbols @@ -1,11 +1,11 @@ === tests/cases/conformance/salsa/def.js === class Outer {} ->Outer : Symbol(Outer, Decl(def.js, 0, 0), Decl(a.js, 0, 0)) +>Outer : Symbol(Outer, Decl(def.js, 0, 0), Decl(a.js, 0, 0), Decl(a.js, 2, 1)) === tests/cases/conformance/salsa/a.js === Outer.Inner = class I { >Outer.Inner : Symbol(Outer.Inner, Decl(a.js, 0, 0)) ->Outer : Symbol(Outer, Decl(def.js, 0, 0), Decl(a.js, 0, 0)) +>Outer : Symbol(Outer, Decl(def.js, 0, 0), Decl(a.js, 0, 0), Decl(a.js, 2, 1)) >Inner : Symbol(Outer.Inner, Decl(a.js, 0, 0)) >I : Symbol(I, Decl(a.js, 0, 13)) @@ -15,7 +15,7 @@ Outer.Inner = class I { /** @type {!Outer.Inner} */ Outer.i >Outer.i : Symbol(Outer.i, Decl(a.js, 2, 1)) ->Outer : Symbol(Outer, Decl(def.js, 0, 0), Decl(a.js, 0, 0)) +>Outer : Symbol(Outer, Decl(def.js, 0, 0), Decl(a.js, 0, 0), Decl(a.js, 2, 1)) >i : Symbol(Outer.i, Decl(a.js, 2, 1)) === tests/cases/conformance/salsa/b.js === @@ -23,7 +23,7 @@ var msgs = Outer.i.messages() >msgs : Symbol(msgs, Decl(b.js, 0, 3)) >Outer.i.messages : Symbol(I.messages, Decl(a.js, 0, 23)) >Outer.i : Symbol(Outer.i, Decl(a.js, 2, 1)) ->Outer : Symbol(Outer, Decl(def.js, 0, 0), Decl(a.js, 0, 0)) +>Outer : Symbol(Outer, Decl(def.js, 0, 0), Decl(a.js, 0, 0), Decl(a.js, 2, 1)) >i : Symbol(Outer.i, Decl(a.js, 2, 1)) >messages : Symbol(I.messages, Decl(a.js, 0, 23)) diff --git a/tests/baselines/reference/typeFromPropertyAssignment9.symbols b/tests/baselines/reference/typeFromPropertyAssignment9.symbols index 81bd1b09c3de0..75ac2bedf8ccd 100644 --- a/tests/baselines/reference/typeFromPropertyAssignment9.symbols +++ b/tests/baselines/reference/typeFromPropertyAssignment9.symbols @@ -1,12 +1,12 @@ === tests/cases/conformance/salsa/a.js === var my = my || {}; ->my : Symbol(my, Decl(a.js, 0, 3), Decl(a.js, 0, 18), Decl(a.js, 7, 34), Decl(a.js, 12, 33)) ->my : Symbol(my, Decl(a.js, 0, 3), Decl(a.js, 0, 18), Decl(a.js, 7, 34), Decl(a.js, 12, 33)) +>my : Symbol(my, Decl(a.js, 0, 3), Decl(a.js, 0, 18), Decl(a.js, 4, 1), Decl(a.js, 5, 14), Decl(a.js, 6, 15) ... and 5 more) +>my : Symbol(my, Decl(a.js, 0, 3), Decl(a.js, 0, 18), Decl(a.js, 4, 1), Decl(a.js, 5, 14), Decl(a.js, 6, 15) ... and 5 more) /** @param {number} n */ my.method = function(n) { >my.method : Symbol(my.method, Decl(a.js, 0, 18)) ->my : Symbol(my, Decl(a.js, 0, 3), Decl(a.js, 0, 18), Decl(a.js, 7, 34), Decl(a.js, 12, 33)) +>my : Symbol(my, Decl(a.js, 0, 3), Decl(a.js, 0, 18), Decl(a.js, 4, 1), Decl(a.js, 5, 14), Decl(a.js, 6, 15) ... and 5 more) >method : Symbol(my.method, Decl(a.js, 0, 18)) >n : Symbol(n, Decl(a.js, 2, 21)) @@ -15,32 +15,32 @@ my.method = function(n) { } my.number = 1; >my.number : Symbol(my.number, Decl(a.js, 4, 1)) ->my : Symbol(my, Decl(a.js, 0, 3), Decl(a.js, 0, 18), Decl(a.js, 7, 34), Decl(a.js, 12, 33)) +>my : Symbol(my, Decl(a.js, 0, 3), Decl(a.js, 0, 18), Decl(a.js, 4, 1), Decl(a.js, 5, 14), Decl(a.js, 6, 15) ... and 5 more) >number : Symbol(my.number, Decl(a.js, 4, 1)) my.object = {}; >my.object : Symbol(my.object, Decl(a.js, 5, 14)) ->my : Symbol(my, Decl(a.js, 0, 3), Decl(a.js, 0, 18), Decl(a.js, 7, 34), Decl(a.js, 12, 33)) +>my : Symbol(my, Decl(a.js, 0, 3), Decl(a.js, 0, 18), Decl(a.js, 4, 1), Decl(a.js, 5, 14), Decl(a.js, 6, 15) ... and 5 more) >object : Symbol(my.object, Decl(a.js, 5, 14)) my.predicate = my.predicate || {}; ->my.predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3)) ->my : Symbol(my, Decl(a.js, 0, 3), Decl(a.js, 0, 18), Decl(a.js, 7, 34), Decl(a.js, 12, 33)) ->predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3)) ->my.predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3)) ->my : Symbol(my, Decl(a.js, 0, 3), Decl(a.js, 0, 18), Decl(a.js, 7, 34), Decl(a.js, 12, 33)) ->predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3)) +>my.predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3), Decl(a.js, 16, 3), Decl(a.js, 20, 3) ... and 1 more) +>my : Symbol(my, Decl(a.js, 0, 3), Decl(a.js, 0, 18), Decl(a.js, 4, 1), Decl(a.js, 5, 14), Decl(a.js, 6, 15) ... and 5 more) +>predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3), Decl(a.js, 16, 3), Decl(a.js, 20, 3) ... and 1 more) +>my.predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3), Decl(a.js, 16, 3), Decl(a.js, 20, 3) ... and 1 more) +>my : Symbol(my, Decl(a.js, 0, 3), Decl(a.js, 0, 18), Decl(a.js, 4, 1), Decl(a.js, 5, 14), Decl(a.js, 6, 15) ... and 5 more) +>predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3), Decl(a.js, 16, 3), Decl(a.js, 20, 3) ... and 1 more) my.predicate.query = function () { ->my.predicate.query : Symbol(my.predicate.query, Decl(a.js, 7, 34), Decl(a.js, 13, 13)) ->my.predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3)) ->my : Symbol(my, Decl(a.js, 0, 3), Decl(a.js, 0, 18), Decl(a.js, 7, 34), Decl(a.js, 12, 33)) ->predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3)) ->query : Symbol(my.predicate.query, Decl(a.js, 7, 34), Decl(a.js, 13, 13)) +>my.predicate.query : Symbol(my.predicate.query, Decl(a.js, 7, 34), Decl(a.js, 13, 13), Decl(a.js, 16, 13)) +>my.predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3), Decl(a.js, 16, 3), Decl(a.js, 20, 3) ... and 1 more) +>my : Symbol(my, Decl(a.js, 0, 3), Decl(a.js, 0, 18), Decl(a.js, 4, 1), Decl(a.js, 5, 14), Decl(a.js, 6, 15) ... and 5 more) +>predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3), Decl(a.js, 16, 3), Decl(a.js, 20, 3) ... and 1 more) +>query : Symbol(my.predicate.query, Decl(a.js, 7, 34), Decl(a.js, 13, 13), Decl(a.js, 16, 13)) var me = this; >me : Symbol(me, Decl(a.js, 9, 7)) ->this : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3)) +>this : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3), Decl(a.js, 16, 3), Decl(a.js, 20, 3) ... and 1 more) me.property = false; >me : Symbol(me, Decl(a.js, 9, 7)) @@ -48,30 +48,30 @@ my.predicate.query = function () { }; var q = new my.predicate.query(); >q : Symbol(q, Decl(a.js, 12, 3)) ->my.predicate.query : Symbol(my.predicate.query, Decl(a.js, 7, 34), Decl(a.js, 13, 13)) ->my.predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3)) ->my : Symbol(my, Decl(a.js, 0, 3), Decl(a.js, 0, 18), Decl(a.js, 7, 34), Decl(a.js, 12, 33)) ->predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3)) ->query : Symbol(my.predicate.query, Decl(a.js, 7, 34), Decl(a.js, 13, 13)) +>my.predicate.query : Symbol(my.predicate.query, Decl(a.js, 7, 34), Decl(a.js, 13, 13), Decl(a.js, 16, 13)) +>my.predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3), Decl(a.js, 16, 3), Decl(a.js, 20, 3) ... and 1 more) +>my : Symbol(my, Decl(a.js, 0, 3), Decl(a.js, 0, 18), Decl(a.js, 4, 1), Decl(a.js, 5, 14), Decl(a.js, 6, 15) ... and 5 more) +>predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3), Decl(a.js, 16, 3), Decl(a.js, 20, 3) ... and 1 more) +>query : Symbol(my.predicate.query, Decl(a.js, 7, 34), Decl(a.js, 13, 13), Decl(a.js, 16, 13)) my.predicate.query.another = function () { >my.predicate.query.another : Symbol(my.predicate.query.another, Decl(a.js, 12, 33)) ->my.predicate.query : Symbol(my.predicate.query, Decl(a.js, 7, 34), Decl(a.js, 13, 13)) ->my.predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3)) ->my : Symbol(my, Decl(a.js, 0, 3), Decl(a.js, 0, 18), Decl(a.js, 7, 34), Decl(a.js, 12, 33)) ->predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3)) ->query : Symbol(my.predicate.query, Decl(a.js, 7, 34), Decl(a.js, 13, 13)) +>my.predicate.query : Symbol(my.predicate.query, Decl(a.js, 7, 34), Decl(a.js, 13, 13), Decl(a.js, 16, 13)) +>my.predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3), Decl(a.js, 16, 3), Decl(a.js, 20, 3) ... and 1 more) +>my : Symbol(my, Decl(a.js, 0, 3), Decl(a.js, 0, 18), Decl(a.js, 4, 1), Decl(a.js, 5, 14), Decl(a.js, 6, 15) ... and 5 more) +>predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3), Decl(a.js, 16, 3), Decl(a.js, 20, 3) ... and 1 more) +>query : Symbol(my.predicate.query, Decl(a.js, 7, 34), Decl(a.js, 13, 13), Decl(a.js, 16, 13)) >another : Symbol(my.predicate.query.another, Decl(a.js, 12, 33)) return 1; } my.predicate.query.result = 'none' >my.predicate.query.result : Symbol(my.predicate.query.result, Decl(a.js, 15, 1)) ->my.predicate.query : Symbol(my.predicate.query, Decl(a.js, 7, 34), Decl(a.js, 13, 13)) ->my.predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3)) ->my : Symbol(my, Decl(a.js, 0, 3), Decl(a.js, 0, 18), Decl(a.js, 7, 34), Decl(a.js, 12, 33)) ->predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3)) ->query : Symbol(my.predicate.query, Decl(a.js, 7, 34), Decl(a.js, 13, 13)) +>my.predicate.query : Symbol(my.predicate.query, Decl(a.js, 7, 34), Decl(a.js, 13, 13), Decl(a.js, 16, 13)) +>my.predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3), Decl(a.js, 16, 3), Decl(a.js, 20, 3) ... and 1 more) +>my : Symbol(my, Decl(a.js, 0, 3), Decl(a.js, 0, 18), Decl(a.js, 4, 1), Decl(a.js, 5, 14), Decl(a.js, 6, 15) ... and 5 more) +>predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3), Decl(a.js, 16, 3), Decl(a.js, 20, 3) ... and 1 more) +>query : Symbol(my.predicate.query, Decl(a.js, 7, 34), Decl(a.js, 13, 13), Decl(a.js, 16, 13)) >result : Symbol(my.predicate.query.result, Decl(a.js, 15, 1)) /** @param {number} first @@ -79,14 +79,14 @@ my.predicate.query.result = 'none' */ my.predicate.sort = my.predicate.sort || function (first, second) { >my.predicate.sort : Symbol(my.predicate.sort, Decl(a.js, 16, 34)) ->my.predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3)) ->my : Symbol(my, Decl(a.js, 0, 3), Decl(a.js, 0, 18), Decl(a.js, 7, 34), Decl(a.js, 12, 33)) ->predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3)) +>my.predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3), Decl(a.js, 16, 3), Decl(a.js, 20, 3) ... and 1 more) +>my : Symbol(my, Decl(a.js, 0, 3), Decl(a.js, 0, 18), Decl(a.js, 4, 1), Decl(a.js, 5, 14), Decl(a.js, 6, 15) ... and 5 more) +>predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3), Decl(a.js, 16, 3), Decl(a.js, 20, 3) ... and 1 more) >sort : Symbol(my.predicate.sort, Decl(a.js, 16, 34)) >my.predicate.sort : Symbol(my.predicate.sort, Decl(a.js, 16, 34)) ->my.predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3)) ->my : Symbol(my, Decl(a.js, 0, 3), Decl(a.js, 0, 18), Decl(a.js, 7, 34), Decl(a.js, 12, 33)) ->predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3)) +>my.predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3), Decl(a.js, 16, 3), Decl(a.js, 20, 3) ... and 1 more) +>my : Symbol(my, Decl(a.js, 0, 3), Decl(a.js, 0, 18), Decl(a.js, 4, 1), Decl(a.js, 5, 14), Decl(a.js, 6, 15) ... and 5 more) +>predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3), Decl(a.js, 16, 3), Decl(a.js, 20, 3) ... and 1 more) >sort : Symbol(my.predicate.sort, Decl(a.js, 16, 34)) >first : Symbol(first, Decl(a.js, 20, 51)) >second : Symbol(second, Decl(a.js, 20, 57)) @@ -99,9 +99,9 @@ my.predicate.sort = my.predicate.sort || function (first, second) { } my.predicate.type = class { >my.predicate.type : Symbol(my.predicate.type, Decl(a.js, 22, 1)) ->my.predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3)) ->my : Symbol(my, Decl(a.js, 0, 3), Decl(a.js, 0, 18), Decl(a.js, 7, 34), Decl(a.js, 12, 33)) ->predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3)) +>my.predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3), Decl(a.js, 16, 3), Decl(a.js, 20, 3) ... and 1 more) +>my : Symbol(my, Decl(a.js, 0, 3), Decl(a.js, 0, 18), Decl(a.js, 4, 1), Decl(a.js, 5, 14), Decl(a.js, 6, 15) ... and 5 more) +>predicate : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3), Decl(a.js, 16, 3), Decl(a.js, 20, 3) ... and 1 more) >type : Symbol(my.predicate.type, Decl(a.js, 22, 1)) m() { return 101; } @@ -111,37 +111,37 @@ my.predicate.type = class { // global-ish prefixes var min = window.min || {}; ->min : Symbol(min, Decl(a.js, 29, 3), Decl(a.js, 29, 27), Decl(a.js, 30, 44)) ->window.min : Symbol(min, Decl(a.js, 29, 3), Decl(a.js, 29, 27), Decl(a.js, 30, 44)) +>min : Symbol(min, Decl(a.js, 29, 3), Decl(a.js, 29, 27), Decl(a.js, 30, 44), Decl(a.js, 31, 50)) +>window.min : Symbol(min, Decl(a.js, 29, 3), Decl(a.js, 29, 27), Decl(a.js, 30, 44), Decl(a.js, 31, 50)) >window : Symbol(window, Decl(lib.dom.d.ts, --, --)) ->min : Symbol(min, Decl(a.js, 29, 3), Decl(a.js, 29, 27), Decl(a.js, 30, 44)) +>min : Symbol(min, Decl(a.js, 29, 3), Decl(a.js, 29, 27), Decl(a.js, 30, 44), Decl(a.js, 31, 50)) min.nest = this.min.nest || function () { }; >min.nest : Symbol(min.nest, Decl(a.js, 29, 27), Decl(a.js, 31, 4)) ->min : Symbol(min, Decl(a.js, 29, 3), Decl(a.js, 29, 27), Decl(a.js, 30, 44)) +>min : Symbol(min, Decl(a.js, 29, 3), Decl(a.js, 29, 27), Decl(a.js, 30, 44), Decl(a.js, 31, 50)) >nest : Symbol(min.nest, Decl(a.js, 29, 27), Decl(a.js, 31, 4)) >this.min.nest : Symbol(min.nest, Decl(a.js, 29, 27), Decl(a.js, 31, 4)) ->this.min : Symbol(min, Decl(a.js, 29, 3), Decl(a.js, 29, 27), Decl(a.js, 30, 44)) +>this.min : Symbol(min, Decl(a.js, 29, 3), Decl(a.js, 29, 27), Decl(a.js, 30, 44), Decl(a.js, 31, 50)) >this : Symbol(globalThis) ->min : Symbol(min, Decl(a.js, 29, 3), Decl(a.js, 29, 27), Decl(a.js, 30, 44)) +>min : Symbol(min, Decl(a.js, 29, 3), Decl(a.js, 29, 27), Decl(a.js, 30, 44), Decl(a.js, 31, 50)) >nest : Symbol(min.nest, Decl(a.js, 29, 27), Decl(a.js, 31, 4)) min.nest.other = self.min.nest.other || class { }; >min.nest.other : Symbol(min.nest.other, Decl(a.js, 30, 44)) >min.nest : Symbol(min.nest, Decl(a.js, 29, 27), Decl(a.js, 31, 4)) ->min : Symbol(min, Decl(a.js, 29, 3), Decl(a.js, 29, 27), Decl(a.js, 30, 44)) +>min : Symbol(min, Decl(a.js, 29, 3), Decl(a.js, 29, 27), Decl(a.js, 30, 44), Decl(a.js, 31, 50)) >nest : Symbol(min.nest, Decl(a.js, 29, 27), Decl(a.js, 31, 4)) >other : Symbol(min.nest.other, Decl(a.js, 30, 44)) >self.min.nest.other : Symbol(min.nest.other, Decl(a.js, 30, 44)) >self.min.nest : Symbol(min.nest, Decl(a.js, 29, 27), Decl(a.js, 31, 4)) ->self.min : Symbol(min, Decl(a.js, 29, 3), Decl(a.js, 29, 27), Decl(a.js, 30, 44)) +>self.min : Symbol(min, Decl(a.js, 29, 3), Decl(a.js, 29, 27), Decl(a.js, 30, 44), Decl(a.js, 31, 50)) >self : Symbol(self, Decl(lib.dom.d.ts, --, --)) ->min : Symbol(min, Decl(a.js, 29, 3), Decl(a.js, 29, 27), Decl(a.js, 30, 44)) +>min : Symbol(min, Decl(a.js, 29, 3), Decl(a.js, 29, 27), Decl(a.js, 30, 44), Decl(a.js, 31, 50)) >nest : Symbol(min.nest, Decl(a.js, 29, 27), Decl(a.js, 31, 4)) >other : Symbol(min.nest.other, Decl(a.js, 30, 44)) min.property = global.min.property || {}; >min.property : Symbol(min.property, Decl(a.js, 31, 50)) ->min : Symbol(min, Decl(a.js, 29, 3), Decl(a.js, 29, 27), Decl(a.js, 30, 44)) +>min : Symbol(min, Decl(a.js, 29, 3), Decl(a.js, 29, 27), Decl(a.js, 30, 44), Decl(a.js, 31, 50)) >property : Symbol(min.property, Decl(a.js, 31, 50)) diff --git a/tests/baselines/reference/typeFromPropertyAssignmentWithExport.symbols b/tests/baselines/reference/typeFromPropertyAssignmentWithExport.symbols index 6dcf8532f1eda..0e061da7ea6a8 100644 --- a/tests/baselines/reference/typeFromPropertyAssignmentWithExport.symbols +++ b/tests/baselines/reference/typeFromPropertyAssignmentWithExport.symbols @@ -2,16 +2,16 @@ // this is a javascript file... export const Adapter = {}; ->Adapter : Symbol(Adapter, Decl(a.js, 2, 12), Decl(a.js, 2, 26)) +>Adapter : Symbol(Adapter, Decl(a.js, 2, 12), Decl(a.js, 2, 26), Decl(a.js, 4, 18)) Adapter.prop = {}; >Adapter.prop : Symbol(Adapter.prop, Decl(a.js, 2, 26)) ->Adapter : Symbol(Adapter, Decl(a.js, 2, 12), Decl(a.js, 2, 26)) +>Adapter : Symbol(Adapter, Decl(a.js, 2, 12), Decl(a.js, 2, 26), Decl(a.js, 4, 18)) >prop : Symbol(Adapter.prop, Decl(a.js, 2, 26)) // comment this out, and it works Adapter.asyncMethod = function() {} >Adapter.asyncMethod : Symbol(Adapter.asyncMethod, Decl(a.js, 4, 18)) ->Adapter : Symbol(Adapter, Decl(a.js, 2, 12), Decl(a.js, 2, 26)) +>Adapter : Symbol(Adapter, Decl(a.js, 2, 12), Decl(a.js, 2, 26), Decl(a.js, 4, 18)) >asyncMethod : Symbol(Adapter.asyncMethod, Decl(a.js, 4, 18)) diff --git a/tests/cases/compiler/jsEnumCrossFileExport.ts b/tests/cases/compiler/jsEnumCrossFileExport.ts new file mode 100644 index 0000000000000..3b9704b92fa40 --- /dev/null +++ b/tests/cases/compiler/jsEnumCrossFileExport.ts @@ -0,0 +1,43 @@ +// @noEmit: true +// @checkJs: true +// @allowJs: true +// @filename: enumDef.js +var Host = {}; +Host.UserMetrics = {}; +/** @enum {number} */ +Host.UserMetrics.Action = { + WindowDocked: 1, + WindowUndocked: 2, + ScriptsBreakpointSet: 3, + TimelineStarted: 4, +}; +/** + * @typedef {string} Host.UserMetrics.Bargh + */ +/** + * @typedef {string} + */ +Host.UserMetrics.Blah = { + x: 12 +} +// @filename: index.js +var Other = {}; +Other.Cls = class { + /** + * @param {!Host.UserMetrics.Action} p + */ + method(p) {} + usage() { + this.method(Host.UserMetrics.Action.WindowDocked); + } +} + +/** + * @type {Host.UserMetrics.Bargh} + */ +var x = "ok"; + +/** + * @type {Host.UserMetrics.Blah} + */ +var y = "ok"; From bd74b7a89f9dfdd5e7e7c19e2454798eaef11204 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Mon, 29 Jul 2019 17:40:24 -0700 Subject: [PATCH 2/3] Check toplevel flag before bind --- src/compiler/binder.ts | 13 ++-- .../jsEnumFunctionLocalNoCrash.symbols | 45 ++++++++++++++ .../jsEnumFunctionLocalNoCrash.types | 60 +++++++++++++++++++ .../compiler/jsEnumFunctionLocalNoCrash.ts | 20 +++++++ 4 files changed, 133 insertions(+), 5 deletions(-) create mode 100644 tests/baselines/reference/jsEnumFunctionLocalNoCrash.symbols create mode 100644 tests/baselines/reference/jsEnumFunctionLocalNoCrash.types create mode 100644 tests/cases/compiler/jsEnumFunctionLocalNoCrash.ts diff --git a/src/compiler/binder.ts b/src/compiler/binder.ts index 4122af221c1bd..7d33d30c0a83f 100644 --- a/src/compiler/binder.ts +++ b/src/compiler/binder.ts @@ -1809,11 +1809,14 @@ namespace ts { const declName = getNameOfDeclaration(typeAlias); if ((isJSDocEnumTag(typeAlias) || !typeAlias.fullName) && declName && isPropertyAccessEntityNameExpression(declName.parent)) { // typdef anchored to an A.B.C assignment - we need to bind into B's namespace under name C - bindPotentiallyMissingNamespaces(file.symbol, declName.parent, getIsTopLevelNamespaceishAssignment(declName.parent), !!findAncestor(declName, d => isPropertyAccessExpression(d) && d.name.escapedText === "prototype")); - const oldContainer = container; - container = isPropertyAccessExpression(declName.parent.expression) ? declName.parent.expression.name : declName.parent.expression; - declareModuleMember(typeAlias, SymbolFlags.TypeAlias, SymbolFlags.TypeAliasExcludes); - container = oldContainer; + const isTL = getIsTopLevelNamespaceishAssignment(declName.parent); + if (isTL) { + bindPotentiallyMissingNamespaces(file.symbol, declName.parent, isTL, !!findAncestor(declName, d => isPropertyAccessExpression(d) && d.name.escapedText === "prototype")); + const oldContainer = container; + container = isPropertyAccessExpression(declName.parent.expression) ? declName.parent.expression.name : declName.parent.expression; + declareModuleMember(typeAlias, SymbolFlags.TypeAlias, SymbolFlags.TypeAliasExcludes); + container = oldContainer; + } } else if (isJSDocEnumTag(typeAlias) || !typeAlias.fullName || typeAlias.fullName.kind === SyntaxKind.Identifier) { parent = typeAlias.parent; diff --git a/tests/baselines/reference/jsEnumFunctionLocalNoCrash.symbols b/tests/baselines/reference/jsEnumFunctionLocalNoCrash.symbols new file mode 100644 index 0000000000000..6d1e59b788e50 --- /dev/null +++ b/tests/baselines/reference/jsEnumFunctionLocalNoCrash.symbols @@ -0,0 +1,45 @@ +=== tests/cases/compiler/index.js === +function defineCommonExtensionSymbols(apiPrivate) { +>defineCommonExtensionSymbols : Symbol(defineCommonExtensionSymbols, Decl(index.js, 0, 0)) +>apiPrivate : Symbol(apiPrivate, Decl(index.js, 0, 38)) + + /** @enum {string} */ + apiPrivate.Events = { +>apiPrivate : Symbol(apiPrivate, Decl(index.js, 0, 38)) + + ButtonClicked: 'button-clicked-', +>ButtonClicked : Symbol(ButtonClicked, Decl(index.js, 2, 25)) + + PanelObjectSelected: 'panel-objectSelected-', +>PanelObjectSelected : Symbol(PanelObjectSelected, Decl(index.js, 3, 39)) + + NetworkRequestFinished: 'network-request-finished', +>NetworkRequestFinished : Symbol(NetworkRequestFinished, Decl(index.js, 4, 51)) + + OpenResource: 'open-resource', +>OpenResource : Symbol(OpenResource, Decl(index.js, 5, 57)) + + PanelSearch: 'panel-search-', +>PanelSearch : Symbol(PanelSearch, Decl(index.js, 6, 36)) + + RecordingStarted: 'trace-recording-started-', +>RecordingStarted : Symbol(RecordingStarted, Decl(index.js, 7, 35)) + + RecordingStopped: 'trace-recording-stopped-', +>RecordingStopped : Symbol(RecordingStopped, Decl(index.js, 8, 51)) + + ResourceAdded: 'resource-added', +>ResourceAdded : Symbol(ResourceAdded, Decl(index.js, 9, 51)) + + ResourceContentCommitted: 'resource-content-committed', +>ResourceContentCommitted : Symbol(ResourceContentCommitted, Decl(index.js, 10, 38)) + + ViewShown: 'view-shown-', +>ViewShown : Symbol(ViewShown, Decl(index.js, 11, 61)) + + ViewHidden: 'view-hidden-' +>ViewHidden : Symbol(ViewHidden, Decl(index.js, 12, 31)) + + }; +} + diff --git a/tests/baselines/reference/jsEnumFunctionLocalNoCrash.types b/tests/baselines/reference/jsEnumFunctionLocalNoCrash.types new file mode 100644 index 0000000000000..247bf32eb81c8 --- /dev/null +++ b/tests/baselines/reference/jsEnumFunctionLocalNoCrash.types @@ -0,0 +1,60 @@ +=== tests/cases/compiler/index.js === +function defineCommonExtensionSymbols(apiPrivate) { +>defineCommonExtensionSymbols : (apiPrivate: any) => void +>apiPrivate : any + + /** @enum {string} */ + apiPrivate.Events = { +>apiPrivate.Events = { ButtonClicked: 'button-clicked-', PanelObjectSelected: 'panel-objectSelected-', NetworkRequestFinished: 'network-request-finished', OpenResource: 'open-resource', PanelSearch: 'panel-search-', RecordingStarted: 'trace-recording-started-', RecordingStopped: 'trace-recording-stopped-', ResourceAdded: 'resource-added', ResourceContentCommitted: 'resource-content-committed', ViewShown: 'view-shown-', ViewHidden: 'view-hidden-' } : { ButtonClicked: string; PanelObjectSelected: string; NetworkRequestFinished: string; OpenResource: string; PanelSearch: string; RecordingStarted: string; RecordingStopped: string; ResourceAdded: string; ResourceContentCommitted: string; ViewShown: string; ViewHidden: string; } +>apiPrivate.Events : any +>apiPrivate : any +>Events : any +>{ ButtonClicked: 'button-clicked-', PanelObjectSelected: 'panel-objectSelected-', NetworkRequestFinished: 'network-request-finished', OpenResource: 'open-resource', PanelSearch: 'panel-search-', RecordingStarted: 'trace-recording-started-', RecordingStopped: 'trace-recording-stopped-', ResourceAdded: 'resource-added', ResourceContentCommitted: 'resource-content-committed', ViewShown: 'view-shown-', ViewHidden: 'view-hidden-' } : { ButtonClicked: string; PanelObjectSelected: string; NetworkRequestFinished: string; OpenResource: string; PanelSearch: string; RecordingStarted: string; RecordingStopped: string; ResourceAdded: string; ResourceContentCommitted: string; ViewShown: string; ViewHidden: string; } + + ButtonClicked: 'button-clicked-', +>ButtonClicked : string +>'button-clicked-' : "button-clicked-" + + PanelObjectSelected: 'panel-objectSelected-', +>PanelObjectSelected : string +>'panel-objectSelected-' : "panel-objectSelected-" + + NetworkRequestFinished: 'network-request-finished', +>NetworkRequestFinished : string +>'network-request-finished' : "network-request-finished" + + OpenResource: 'open-resource', +>OpenResource : string +>'open-resource' : "open-resource" + + PanelSearch: 'panel-search-', +>PanelSearch : string +>'panel-search-' : "panel-search-" + + RecordingStarted: 'trace-recording-started-', +>RecordingStarted : string +>'trace-recording-started-' : "trace-recording-started-" + + RecordingStopped: 'trace-recording-stopped-', +>RecordingStopped : string +>'trace-recording-stopped-' : "trace-recording-stopped-" + + ResourceAdded: 'resource-added', +>ResourceAdded : string +>'resource-added' : "resource-added" + + ResourceContentCommitted: 'resource-content-committed', +>ResourceContentCommitted : string +>'resource-content-committed' : "resource-content-committed" + + ViewShown: 'view-shown-', +>ViewShown : string +>'view-shown-' : "view-shown-" + + ViewHidden: 'view-hidden-' +>ViewHidden : string +>'view-hidden-' : "view-hidden-" + + }; +} + diff --git a/tests/cases/compiler/jsEnumFunctionLocalNoCrash.ts b/tests/cases/compiler/jsEnumFunctionLocalNoCrash.ts new file mode 100644 index 0000000000000..73f9a5453e481 --- /dev/null +++ b/tests/cases/compiler/jsEnumFunctionLocalNoCrash.ts @@ -0,0 +1,20 @@ +// @noEmit: true +// @checkJs: true +// @allowJs: true +// @filename: index.js +function defineCommonExtensionSymbols(apiPrivate) { + /** @enum {string} */ + apiPrivate.Events = { + ButtonClicked: 'button-clicked-', + PanelObjectSelected: 'panel-objectSelected-', + NetworkRequestFinished: 'network-request-finished', + OpenResource: 'open-resource', + PanelSearch: 'panel-search-', + RecordingStarted: 'trace-recording-started-', + RecordingStopped: 'trace-recording-stopped-', + ResourceAdded: 'resource-added', + ResourceContentCommitted: 'resource-content-committed', + ViewShown: 'view-shown-', + ViewHidden: 'view-hidden-' + }; +} From af569fb68b7c1195b6177379de78bad8deea0a19 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Fri, 2 Aug 2019 15:58:13 -0700 Subject: [PATCH 3/3] Small renames --- src/compiler/binder.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/compiler/binder.ts b/src/compiler/binder.ts index 7d33d30c0a83f..3445d26e4c34a 100644 --- a/src/compiler/binder.ts +++ b/src/compiler/binder.ts @@ -1808,10 +1808,10 @@ namespace ts { bind(typeAlias.typeExpression); const declName = getNameOfDeclaration(typeAlias); if ((isJSDocEnumTag(typeAlias) || !typeAlias.fullName) && declName && isPropertyAccessEntityNameExpression(declName.parent)) { - // typdef anchored to an A.B.C assignment - we need to bind into B's namespace under name C - const isTL = getIsTopLevelNamespaceishAssignment(declName.parent); - if (isTL) { - bindPotentiallyMissingNamespaces(file.symbol, declName.parent, isTL, !!findAncestor(declName, d => isPropertyAccessExpression(d) && d.name.escapedText === "prototype")); + // typedef anchored to an A.B.C assignment - we need to bind into B's namespace under name C + const isTopLevel = isTopLevelNamespaceAssignment(declName.parent); + if (isTopLevel) { + bindPotentiallyMissingNamespaces(file.symbol, declName.parent, isTopLevel, !!findAncestor(declName, d => isPropertyAccessExpression(d) && d.name.escapedText === "prototype")); const oldContainer = container; container = isPropertyAccessExpression(declName.parent.expression) ? declName.parent.expression.name : declName.parent.expression; declareModuleMember(typeAlias, SymbolFlags.TypeAlias, SymbolFlags.TypeAliasExcludes); @@ -2654,7 +2654,7 @@ namespace ts { declareSymbol(symbolTable, namespaceSymbol, declaration, includes | SymbolFlags.Assignment, excludes & ~SymbolFlags.Assignment); } - function getIsTopLevelNamespaceishAssignment(propertyAccess: PropertyAccessEntityNameExpression) { + function isTopLevelNamespaceAssignment(propertyAccess: PropertyAccessEntityNameExpression) { return isBinaryExpression(propertyAccess.parent) ? getParentOfBinaryExpression(propertyAccess.parent).parent.kind === SyntaxKind.SourceFile : propertyAccess.parent.parent.kind === SyntaxKind.SourceFile; @@ -2662,7 +2662,7 @@ namespace ts { function bindPropertyAssignment(name: EntityNameExpression, propertyAccess: PropertyAccessEntityNameExpression, isPrototypeProperty: boolean) { let namespaceSymbol = lookupSymbolForPropertyAccess(name); - const isToplevel = getIsTopLevelNamespaceishAssignment(propertyAccess); + const isToplevel = isTopLevelNamespaceAssignment(propertyAccess); namespaceSymbol = bindPotentiallyMissingNamespaces(namespaceSymbol, propertyAccess.expression, isToplevel, isPrototypeProperty); bindPotentiallyNewExpandoMemberToNamespace(propertyAccess, namespaceSymbol, isPrototypeProperty); }