diff --git a/src/services/services.ts b/src/services/services.ts index 4f3e84661ad..42f25a8a184 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -2784,10 +2784,10 @@ module ts { if (flags & SymbolFlags.Property) { if (flags & SymbolFlags.UnionProperty) { - // If union property is result of union of non method (property/accessors), it is labeled as property + // If union property is result of union of non method (property/accessors/variables), it is labeled as property var unionPropertyKind = forEach(typeInfoResolver.getRootSymbols(symbol), rootSymbol => { var rootSymbolFlags = rootSymbol.getFlags(); - if (rootSymbolFlags & (SymbolFlags.Property | SymbolFlags.GetAccessor | SymbolFlags.SetAccessor)) { + if (rootSymbolFlags & (SymbolFlags.PropertyOrAccessor | SymbolFlags.Variable)) { return ScriptElementKind.memberVariableElement; } Debug.assert(!!(rootSymbolFlags & SymbolFlags.Method)); diff --git a/tests/cases/fourslash/completionEntryForPropertyFromUnionOfModuleType.ts b/tests/cases/fourslash/completionEntryForPropertyFromUnionOfModuleType.ts new file mode 100644 index 00000000000..1e072acd1fa --- /dev/null +++ b/tests/cases/fourslash/completionEntryForPropertyFromUnionOfModuleType.ts @@ -0,0 +1,13 @@ +/// + +////module E { +//// export var n = 1; +////} +////module F { +//// export var n = 1; +////} +////var q: typeof E | typeof F; +////var j = q./*1*/ + +goTo.marker('1'); +verify.completionListContains('n', "(property) n: number"); \ No newline at end of file