diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 75be36474222f..86026f42d2e60 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -42734,12 +42734,23 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } function checkIndexedAccessIndexType(type: Type, accessNode: IndexedAccessTypeNode | ElementAccessExpression) { + if (type.flags & TypeFlags.Never && isIndexedAccessTypeNode(accessNode)) { + if (!checkNonPublicPropertyAccess(getTypeFromTypeNode(accessNode.objectType), getTypeFromTypeNode(accessNode.indexType))) { + return errorType; + } + return type; + } if (!(type.flags & TypeFlags.IndexedAccess)) { return type; } // Check if the index type is assignable to 'keyof T' for the object type. const objectType = (type as IndexedAccessType).objectType; const indexType = (type as IndexedAccessType).indexType; + + if (!checkNonPublicPropertyAccess(objectType, indexType)) { + return errorType; + } + // skip index type deferral on remapping mapped types const objectIndexType = isGenericMappedType(objectType) && getMappedTypeNameTypeKind(objectType) === MappedTypeNameTypeKind.Remapping ? getIndexTypeForMappedType(objectType, IndexFlags.None) @@ -42754,18 +42765,25 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } return type; } - if (isGenericObjectType(objectType)) { + error(accessNode, Diagnostics.Type_0_cannot_be_used_to_index_type_1, typeToString(indexType), typeToString(objectType)); + return errorType; + + function checkNonPublicPropertyAccess(objectType: Type, indexType: Type) { const propertyName = getPropertyNameFromIndex(indexType, accessNode); - if (propertyName) { - const propertySymbol = forEachType(getApparentType(objectType), t => getPropertyOfType(t, propertyName)); - if (propertySymbol && getDeclarationModifierFlagsFromSymbol(propertySymbol) & ModifierFlags.NonPublicAccessibilityModifier) { - error(accessNode, Diagnostics.Private_or_protected_member_0_cannot_be_accessed_on_a_type_parameter, unescapeLeadingUnderscores(propertyName)); - return errorType; - } + if (propertyName && someType(getApparentType(objectType), t => isNonPublicPropertyOfType(t, propertyName))) { + error(accessNode, Diagnostics.Private_or_protected_member_0_cannot_be_accessed_on_a_type_parameter, unescapeLeadingUnderscores(propertyName)); + return false; } + return true; + } + + function isNonPublicPropertyOfType(type: Type, propertyName: __String): boolean { + if (type.flags & TypeFlags.Intersection) { + return some((type as IntersectionType).types, t => isNonPublicPropertyOfType(t, propertyName)); + } + const propertySymbol = getPropertyOfType(type, propertyName); + return !!(propertySymbol && getDeclarationModifierFlagsFromSymbol(propertySymbol) & ModifierFlags.NonPublicAccessibilityModifier); } - error(accessNode, Diagnostics.Type_0_cannot_be_used_to_index_type_1, typeToString(indexType), typeToString(objectType)); - return errorType; } function checkIndexedAccessType(node: IndexedAccessTypeNode) { diff --git a/tests/baselines/reference/indexedAccessPrivateMemberOfGenericConstraint.errors.txt b/tests/baselines/reference/indexedAccessPrivateMemberOfGenericConstraint.errors.txt index be168e7171843..4fcbb0a4341f0 100644 --- a/tests/baselines/reference/indexedAccessPrivateMemberOfGenericConstraint.errors.txt +++ b/tests/baselines/reference/indexedAccessPrivateMemberOfGenericConstraint.errors.txt @@ -1,9 +1,41 @@ indexedAccessPrivateMemberOfGenericConstraint.ts(9,24): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. indexedAccessPrivateMemberOfGenericConstraint.ts(9,32): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. indexedAccessPrivateMemberOfGenericConstraint.ts(10,27): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint.ts(11,27): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint.ts(12,37): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint.ts(13,37): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint.ts(14,23): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint.ts(15,37): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint.ts(16,37): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint.ts(26,25): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint.ts(26,33): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint.ts(27,28): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint.ts(28,28): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint.ts(29,38): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint.ts(30,38): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint.ts(31,24): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint.ts(32,38): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint.ts(33,38): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint.ts(43,33): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint.ts(44,28): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint.ts(45,28): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint.ts(46,38): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint.ts(47,38): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint.ts(48,24): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint.ts(49,38): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint.ts(50,38): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint.ts(60,25): error TS2536: Type '"a"' cannot be used to index type 'T'. +indexedAccessPrivateMemberOfGenericConstraint.ts(60,33): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint.ts(61,28): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint.ts(62,28): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint.ts(63,38): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint.ts(64,38): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint.ts(65,24): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint.ts(66,38): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint.ts(67,38): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. -==== indexedAccessPrivateMemberOfGenericConstraint.ts (3 errors) ==== +==== indexedAccessPrivateMemberOfGenericConstraint.ts (35 errors) ==== class A { private a: number; } @@ -21,4 +53,124 @@ indexedAccessPrivateMemberOfGenericConstraint.ts(10,27): error TS4105: Private o ~~~~~~ !!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. type Z = T["a"]; + ~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type R = (T | T2)["a"]; + ~~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type S = (T | T2)["a"]; + ~~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type U = (T & B)["a"]; + ~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type V = (T & T2)["a"]; + ~~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type W = (T & T2)["a"]; + ~~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + + class C { + declare private a: number; + } + + class D { + declare a: string; + } + + type X2 = [T["a"], (T | D)["a"]]; + ~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + ~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type Y2 = T["a"]; + ~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type Z2 = T["a"]; + ~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type R2 = (T | T2)["a"]; + ~~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type S2 = (T | T2)["a"]; + ~~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type U2 = (T & D)["a"]; + ~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type V2 = (T & T2)["a"]; + ~~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type W2 = (T & T2)["a"]; + ~~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + + class E { + declare a: number; + } + + class F { + declare private a: string; + } + + type X3 = [T["a"], (T | F)["a"]]; + ~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type Y3 = T["a"]; + ~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type Z3 = T["a"]; + ~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type R3 = (T | T2)["a"]; + ~~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type S3 = (T | T2)["a"]; + ~~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type U3 = (T & F)["a"]; + ~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type V3 = (T & T2)["a"]; + ~~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type W3 = (T & T2)["a"]; + ~~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + + class G { + declare b: number; + } + + class H { + declare private a: string; + } + + type X4 = [T["a"], (T | H)["a"]]; + ~~~~~~ +!!! error TS2536: Type '"a"' cannot be used to index type 'T'. + ~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type Y4 = T["a"]; + ~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type Z4 = T["a"]; + ~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type R4 = (T | T2)["a"]; + ~~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type S4 = (T | T2)["a"]; + ~~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type U4 = (T & H)["a"]; + ~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type V4 = (T & T2)["a"]; + ~~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type W4 = (T & T2)["a"]; + ~~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. \ No newline at end of file diff --git a/tests/baselines/reference/indexedAccessPrivateMemberOfGenericConstraint.js b/tests/baselines/reference/indexedAccessPrivateMemberOfGenericConstraint.js index ff80de9774c23..bd0faeb64c822 100644 --- a/tests/baselines/reference/indexedAccessPrivateMemberOfGenericConstraint.js +++ b/tests/baselines/reference/indexedAccessPrivateMemberOfGenericConstraint.js @@ -12,6 +12,62 @@ class B { type X = [T["a"], (T | B)["a"]]; type Y = T["a"]; type Z = T["a"]; +type R = (T | T2)["a"]; +type S = (T | T2)["a"]; +type U = (T & B)["a"]; +type V = (T & T2)["a"]; +type W = (T & T2)["a"]; + +class C { + declare private a: number; +} + +class D { + declare a: string; +} + +type X2 = [T["a"], (T | D)["a"]]; +type Y2 = T["a"]; +type Z2 = T["a"]; +type R2 = (T | T2)["a"]; +type S2 = (T | T2)["a"]; +type U2 = (T & D)["a"]; +type V2 = (T & T2)["a"]; +type W2 = (T & T2)["a"]; + +class E { + declare a: number; +} + +class F { + declare private a: string; +} + +type X3 = [T["a"], (T | F)["a"]]; +type Y3 = T["a"]; +type Z3 = T["a"]; +type R3 = (T | T2)["a"]; +type S3 = (T | T2)["a"]; +type U3 = (T & F)["a"]; +type V3 = (T & T2)["a"]; +type W3 = (T & T2)["a"]; + +class G { + declare b: number; +} + +class H { + declare private a: string; +} + +type X4 = [T["a"], (T | H)["a"]]; +type Y4 = T["a"]; +type Z4 = T["a"]; +type R4 = (T | T2)["a"]; +type S4 = (T | T2)["a"]; +type U4 = (T & H)["a"]; +type V4 = (T & T2)["a"]; +type W4 = (T & T2)["a"]; //// [indexedAccessPrivateMemberOfGenericConstraint.js] @@ -25,3 +81,33 @@ var B = /** @class */ (function () { } return B; }()); +var C = /** @class */ (function () { + function C() { + } + return C; +}()); +var D = /** @class */ (function () { + function D() { + } + return D; +}()); +var E = /** @class */ (function () { + function E() { + } + return E; +}()); +var F = /** @class */ (function () { + function F() { + } + return F; +}()); +var G = /** @class */ (function () { + function G() { + } + return G; +}()); +var H = /** @class */ (function () { + function H() { + } + return H; +}()); diff --git a/tests/baselines/reference/indexedAccessPrivateMemberOfGenericConstraint.symbols b/tests/baselines/reference/indexedAccessPrivateMemberOfGenericConstraint.symbols index 29932d58a8ad7..9e706094aeb38 100644 --- a/tests/baselines/reference/indexedAccessPrivateMemberOfGenericConstraint.symbols +++ b/tests/baselines/reference/indexedAccessPrivateMemberOfGenericConstraint.symbols @@ -37,3 +37,283 @@ type Z = T["a"]; >B : Symbol(B, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 2, 1)) >T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 10, 7)) +type R = (T | T2)["a"]; +>R : Symbol(R, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 10, 33)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 11, 7)) +>A : Symbol(A, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 0, 0)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 11, 19)) +>B : Symbol(B, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 2, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 11, 7)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 11, 19)) + +type S = (T | T2)["a"]; +>S : Symbol(S, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 11, 50)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 12, 7)) +>B : Symbol(B, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 2, 1)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 12, 19)) +>A : Symbol(A, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 0, 0)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 12, 7)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 12, 19)) + +type U = (T & B)["a"]; +>U : Symbol(U, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 12, 50)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 13, 7)) +>A : Symbol(A, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 0, 0)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 13, 7)) +>B : Symbol(B, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 2, 1)) + +type V = (T & T2)["a"]; +>V : Symbol(V, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 13, 35)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 14, 7)) +>A : Symbol(A, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 0, 0)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 14, 19)) +>B : Symbol(B, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 2, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 14, 7)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 14, 19)) + +type W = (T & T2)["a"]; +>W : Symbol(W, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 14, 50)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 15, 7)) +>B : Symbol(B, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 2, 1)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 15, 19)) +>A : Symbol(A, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 0, 0)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 15, 7)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 15, 19)) + +class C { +>C : Symbol(C, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 15, 50)) + + declare private a: number; +>a : Symbol(C.a, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 17, 9)) +} + +class D { +>D : Symbol(D, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 19, 1)) + + declare a: string; +>a : Symbol(D.a, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 21, 9)) +} + +type X2 = [T["a"], (T | D)["a"]]; +>X2 : Symbol(X2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 23, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 25, 8)) +>C : Symbol(C, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 15, 50)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 25, 8)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 25, 8)) +>D : Symbol(D, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 19, 1)) + +type Y2 = T["a"]; +>Y2 : Symbol(Y2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 25, 46)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 26, 8)) +>C : Symbol(C, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 15, 50)) +>D : Symbol(D, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 19, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 26, 8)) + +type Z2 = T["a"]; +>Z2 : Symbol(Z2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 26, 34)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 27, 8)) +>C : Symbol(C, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 15, 50)) +>D : Symbol(D, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 19, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 27, 8)) + +type R2 = (T | T2)["a"]; +>R2 : Symbol(R2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 27, 34)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 28, 8)) +>C : Symbol(C, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 15, 50)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 28, 20)) +>D : Symbol(D, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 19, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 28, 8)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 28, 20)) + +type S2 = (T | T2)["a"]; +>S2 : Symbol(S2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 28, 51)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 29, 8)) +>D : Symbol(D, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 19, 1)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 29, 20)) +>C : Symbol(C, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 15, 50)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 29, 8)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 29, 20)) + +type U2 = (T & D)["a"]; +>U2 : Symbol(U2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 29, 51)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 30, 8)) +>C : Symbol(C, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 15, 50)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 30, 8)) +>D : Symbol(D, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 19, 1)) + +type V2 = (T & T2)["a"]; +>V2 : Symbol(V2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 30, 36)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 31, 8)) +>C : Symbol(C, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 15, 50)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 31, 20)) +>D : Symbol(D, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 19, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 31, 8)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 31, 20)) + +type W2 = (T & T2)["a"]; +>W2 : Symbol(W2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 31, 51)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 32, 8)) +>D : Symbol(D, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 19, 1)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 32, 20)) +>C : Symbol(C, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 15, 50)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 32, 8)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 32, 20)) + +class E { +>E : Symbol(E, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 32, 51)) + + declare a: number; +>a : Symbol(E.a, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 34, 9)) +} + +class F { +>F : Symbol(F, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 36, 1)) + + declare private a: string; +>a : Symbol(F.a, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 38, 9)) +} + +type X3 = [T["a"], (T | F)["a"]]; +>X3 : Symbol(X3, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 40, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 42, 8)) +>E : Symbol(E, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 32, 51)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 42, 8)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 42, 8)) +>F : Symbol(F, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 36, 1)) + +type Y3 = T["a"]; +>Y3 : Symbol(Y3, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 42, 46)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 43, 8)) +>E : Symbol(E, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 32, 51)) +>F : Symbol(F, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 36, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 43, 8)) + +type Z3 = T["a"]; +>Z3 : Symbol(Z3, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 43, 34)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 44, 8)) +>E : Symbol(E, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 32, 51)) +>F : Symbol(F, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 36, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 44, 8)) + +type R3 = (T | T2)["a"]; +>R3 : Symbol(R3, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 44, 34)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 45, 8)) +>E : Symbol(E, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 32, 51)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 45, 20)) +>F : Symbol(F, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 36, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 45, 8)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 45, 20)) + +type S3 = (T | T2)["a"]; +>S3 : Symbol(S3, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 45, 51)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 46, 8)) +>F : Symbol(F, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 36, 1)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 46, 20)) +>E : Symbol(E, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 32, 51)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 46, 8)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 46, 20)) + +type U3 = (T & F)["a"]; +>U3 : Symbol(U3, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 46, 51)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 47, 8)) +>E : Symbol(E, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 32, 51)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 47, 8)) +>F : Symbol(F, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 36, 1)) + +type V3 = (T & T2)["a"]; +>V3 : Symbol(V3, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 47, 36)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 48, 8)) +>E : Symbol(E, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 32, 51)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 48, 20)) +>F : Symbol(F, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 36, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 48, 8)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 48, 20)) + +type W3 = (T & T2)["a"]; +>W3 : Symbol(W3, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 48, 51)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 49, 8)) +>F : Symbol(F, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 36, 1)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 49, 20)) +>E : Symbol(E, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 32, 51)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 49, 8)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 49, 20)) + +class G { +>G : Symbol(G, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 49, 51)) + + declare b: number; +>b : Symbol(G.b, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 51, 9)) +} + +class H { +>H : Symbol(H, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 53, 1)) + + declare private a: string; +>a : Symbol(H.a, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 55, 9)) +} + +type X4 = [T["a"], (T | H)["a"]]; +>X4 : Symbol(X4, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 57, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 59, 8)) +>G : Symbol(G, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 49, 51)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 59, 8)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 59, 8)) +>H : Symbol(H, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 53, 1)) + +type Y4 = T["a"]; +>Y4 : Symbol(Y4, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 59, 46)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 60, 8)) +>G : Symbol(G, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 49, 51)) +>H : Symbol(H, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 53, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 60, 8)) + +type Z4 = T["a"]; +>Z4 : Symbol(Z4, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 60, 34)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 61, 8)) +>G : Symbol(G, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 49, 51)) +>H : Symbol(H, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 53, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 61, 8)) + +type R4 = (T | T2)["a"]; +>R4 : Symbol(R4, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 61, 34)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 62, 8)) +>G : Symbol(G, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 49, 51)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 62, 20)) +>H : Symbol(H, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 53, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 62, 8)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 62, 20)) + +type S4 = (T | T2)["a"]; +>S4 : Symbol(S4, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 62, 51)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 63, 8)) +>H : Symbol(H, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 53, 1)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 63, 20)) +>G : Symbol(G, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 49, 51)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 63, 8)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 63, 20)) + +type U4 = (T & H)["a"]; +>U4 : Symbol(U4, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 63, 51)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 64, 8)) +>G : Symbol(G, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 49, 51)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 64, 8)) +>H : Symbol(H, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 53, 1)) + +type V4 = (T & T2)["a"]; +>V4 : Symbol(V4, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 64, 36)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 65, 8)) +>G : Symbol(G, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 49, 51)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 65, 20)) +>H : Symbol(H, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 53, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 65, 8)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 65, 20)) + +type W4 = (T & T2)["a"]; +>W4 : Symbol(W4, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 65, 51)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 66, 8)) +>H : Symbol(H, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 53, 1)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 66, 20)) +>G : Symbol(G, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 49, 51)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 66, 8)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint.ts, 66, 20)) + diff --git a/tests/baselines/reference/indexedAccessPrivateMemberOfGenericConstraint.types b/tests/baselines/reference/indexedAccessPrivateMemberOfGenericConstraint.types index c2c7cfa40cdb9..6663a3c195c7b 100644 --- a/tests/baselines/reference/indexedAccessPrivateMemberOfGenericConstraint.types +++ b/tests/baselines/reference/indexedAccessPrivateMemberOfGenericConstraint.types @@ -31,3 +31,173 @@ type Z = T["a"]; >Z : Z > : ^^^^ +type R = (T | T2)["a"]; +>R : R +> : ^^^^^^^^ + +type S = (T | T2)["a"]; +>S : S +> : ^^^^^^^^ + +type U = (T & B)["a"]; +>U : never +> : ^^^^^ + +type V = (T & T2)["a"]; +>V : never +> : ^^^^^ + +type W = (T & T2)["a"]; +>W : never +> : ^^^^^ + +class C { +>C : C +> : ^ + + declare private a: number; +>a : number +> : ^^^^^^ +} + +class D { +>D : D +> : ^ + + declare a: string; +>a : string +> : ^^^^^^ +} + +type X2 = [T["a"], (T | D)["a"]]; +>X2 : X2 +> : ^^^^^ + +type Y2 = T["a"]; +>Y2 : Y2 +> : ^^^^^ + +type Z2 = T["a"]; +>Z2 : Z2 +> : ^^^^^ + +type R2 = (T | T2)["a"]; +>R2 : R2 +> : ^^^^^^^^^ + +type S2 = (T | T2)["a"]; +>S2 : S2 +> : ^^^^^^^^^ + +type U2 = (T & D)["a"]; +>U2 : never +> : ^^^^^ + +type V2 = (T & T2)["a"]; +>V2 : never +> : ^^^^^ + +type W2 = (T & T2)["a"]; +>W2 : never +> : ^^^^^ + +class E { +>E : E +> : ^ + + declare a: number; +>a : number +> : ^^^^^^ +} + +class F { +>F : F +> : ^ + + declare private a: string; +>a : string +> : ^^^^^^ +} + +type X3 = [T["a"], (T | F)["a"]]; +>X3 : X3 +> : ^^^^^ + +type Y3 = T["a"]; +>Y3 : Y3 +> : ^^^^^ + +type Z3 = T["a"]; +>Z3 : Z3 +> : ^^^^^ + +type R3 = (T | T2)["a"]; +>R3 : R3 +> : ^^^^^^^^^ + +type S3 = (T | T2)["a"]; +>S3 : S3 +> : ^^^^^^^^^ + +type U3 = (T & F)["a"]; +>U3 : never +> : ^^^^^ + +type V3 = (T & T2)["a"]; +>V3 : never +> : ^^^^^ + +type W3 = (T & T2)["a"]; +>W3 : never +> : ^^^^^ + +class G { +>G : G +> : ^ + + declare b: number; +>b : number +> : ^^^^^^ +} + +class H { +>H : H +> : ^ + + declare private a: string; +>a : string +> : ^^^^^^ +} + +type X4 = [T["a"], (T | H)["a"]]; +>X4 : X4 +> : ^^^^^ + +type Y4 = T["a"]; +>Y4 : Y4 +> : ^^^^^ + +type Z4 = T["a"]; +>Z4 : Z4 +> : ^^^^^ + +type R4 = (T | T2)["a"]; +>R4 : R4 +> : ^^^^^^^^^ + +type S4 = (T | T2)["a"]; +>S4 : S4 +> : ^^^^^^^^^ + +type U4 = (T & H)["a"]; +>U4 : U4 +> : ^^^^^ + +type V4 = (T & T2)["a"]; +>V4 : V4 +> : ^^^^^^^^^ + +type W4 = (T & T2)["a"]; +>W4 : W4 +> : ^^^^^^^^^ + diff --git a/tests/baselines/reference/indexedAccessPrivateMemberOfGenericConstraint2.errors.txt b/tests/baselines/reference/indexedAccessPrivateMemberOfGenericConstraint2.errors.txt new file mode 100644 index 0000000000000..41f45dcd3ab04 --- /dev/null +++ b/tests/baselines/reference/indexedAccessPrivateMemberOfGenericConstraint2.errors.txt @@ -0,0 +1,176 @@ +indexedAccessPrivateMemberOfGenericConstraint2.ts(9,24): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint2.ts(9,32): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint2.ts(10,27): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint2.ts(11,27): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint2.ts(12,37): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint2.ts(13,37): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint2.ts(14,23): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint2.ts(15,37): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint2.ts(16,37): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint2.ts(26,25): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint2.ts(26,33): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint2.ts(27,28): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint2.ts(28,28): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint2.ts(29,38): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint2.ts(30,38): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint2.ts(31,24): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint2.ts(32,38): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint2.ts(33,38): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint2.ts(43,33): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint2.ts(44,28): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint2.ts(45,28): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint2.ts(46,38): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint2.ts(47,38): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint2.ts(48,24): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint2.ts(49,38): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint2.ts(50,38): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint2.ts(60,25): error TS2536: Type '"a"' cannot be used to index type 'T'. +indexedAccessPrivateMemberOfGenericConstraint2.ts(60,33): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint2.ts(61,28): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint2.ts(62,28): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint2.ts(63,38): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint2.ts(64,38): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint2.ts(65,24): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint2.ts(66,38): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. +indexedAccessPrivateMemberOfGenericConstraint2.ts(67,38): error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + + +==== indexedAccessPrivateMemberOfGenericConstraint2.ts (35 errors) ==== + class A { + declare private a: { foo: number }; + } + + class B { + declare private a: { bar: string }; + } + + type X = [T["a"], (T | B)["a"]]; + ~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + ~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type Y = T["a"]; + ~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type Z = T["a"]; + ~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type R = (T | T2)["a"]; + ~~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type S = (T | T2)["a"]; + ~~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type U = (T & B)["a"]; + ~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type V = (T & T2)["a"]; + ~~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type W = (T & T2)["a"]; + ~~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + + class C { + declare private a: { foo: number }; + } + + class D { + declare a: { bar: string }; + } + + type X2 = [T["a"], (T | D)["a"]]; + ~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + ~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type Y2 = T["a"]; + ~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type Z2 = T["a"]; + ~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type R2 = (T | T2)["a"]; + ~~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type S2 = (T | T2)["a"]; + ~~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type U2 = (T & D)["a"]; + ~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type V2 = (T & T2)["a"]; + ~~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type W2 = (T & T2)["a"]; + ~~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + + class E { + declare a: { foo: number }; + } + + class F { + declare private a: { bar: string }; + } + + type X3 = [T["a"], (T | F)["a"]]; + ~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type Y3 = T["a"]; + ~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type Z3 = T["a"]; + ~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type R3 = (T | T2)["a"]; + ~~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type S3 = (T | T2)["a"]; + ~~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type U3 = (T & F)["a"]; + ~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type V3 = (T & T2)["a"]; + ~~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type W3 = (T & T2)["a"]; + ~~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + + class G { + declare b: { foo: number }; + } + + class H { + declare private a: { bar: string }; + } + + type X4 = [T["a"], (T | H)["a"]]; + ~~~~~~ +!!! error TS2536: Type '"a"' cannot be used to index type 'T'. + ~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type Y4 = T["a"]; + ~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type Z4 = T["a"]; + ~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type R4 = (T | T2)["a"]; + ~~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type S4 = (T | T2)["a"]; + ~~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type U4 = (T & H)["a"]; + ~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type V4 = (T & T2)["a"]; + ~~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + type W4 = (T & T2)["a"]; + ~~~~~~~~~~~~~ +!!! error TS4105: Private or protected member 'a' cannot be accessed on a type parameter. + \ No newline at end of file diff --git a/tests/baselines/reference/indexedAccessPrivateMemberOfGenericConstraint2.js b/tests/baselines/reference/indexedAccessPrivateMemberOfGenericConstraint2.js new file mode 100644 index 0000000000000..65892715d4f10 --- /dev/null +++ b/tests/baselines/reference/indexedAccessPrivateMemberOfGenericConstraint2.js @@ -0,0 +1,113 @@ +//// [tests/cases/compiler/indexedAccessPrivateMemberOfGenericConstraint2.ts] //// + +//// [indexedAccessPrivateMemberOfGenericConstraint2.ts] +class A { + declare private a: { foo: number }; +} + +class B { + declare private a: { bar: string }; +} + +type X = [T["a"], (T | B)["a"]]; +type Y = T["a"]; +type Z = T["a"]; +type R = (T | T2)["a"]; +type S = (T | T2)["a"]; +type U = (T & B)["a"]; +type V = (T & T2)["a"]; +type W = (T & T2)["a"]; + +class C { + declare private a: { foo: number }; +} + +class D { + declare a: { bar: string }; +} + +type X2 = [T["a"], (T | D)["a"]]; +type Y2 = T["a"]; +type Z2 = T["a"]; +type R2 = (T | T2)["a"]; +type S2 = (T | T2)["a"]; +type U2 = (T & D)["a"]; +type V2 = (T & T2)["a"]; +type W2 = (T & T2)["a"]; + +class E { + declare a: { foo: number }; +} + +class F { + declare private a: { bar: string }; +} + +type X3 = [T["a"], (T | F)["a"]]; +type Y3 = T["a"]; +type Z3 = T["a"]; +type R3 = (T | T2)["a"]; +type S3 = (T | T2)["a"]; +type U3 = (T & F)["a"]; +type V3 = (T & T2)["a"]; +type W3 = (T & T2)["a"]; + +class G { + declare b: { foo: number }; +} + +class H { + declare private a: { bar: string }; +} + +type X4 = [T["a"], (T | H)["a"]]; +type Y4 = T["a"]; +type Z4 = T["a"]; +type R4 = (T | T2)["a"]; +type S4 = (T | T2)["a"]; +type U4 = (T & H)["a"]; +type V4 = (T & T2)["a"]; +type W4 = (T & T2)["a"]; + + +//// [indexedAccessPrivateMemberOfGenericConstraint2.js] +var A = /** @class */ (function () { + function A() { + } + return A; +}()); +var B = /** @class */ (function () { + function B() { + } + return B; +}()); +var C = /** @class */ (function () { + function C() { + } + return C; +}()); +var D = /** @class */ (function () { + function D() { + } + return D; +}()); +var E = /** @class */ (function () { + function E() { + } + return E; +}()); +var F = /** @class */ (function () { + function F() { + } + return F; +}()); +var G = /** @class */ (function () { + function G() { + } + return G; +}()); +var H = /** @class */ (function () { + function H() { + } + return H; +}()); diff --git a/tests/baselines/reference/indexedAccessPrivateMemberOfGenericConstraint2.symbols b/tests/baselines/reference/indexedAccessPrivateMemberOfGenericConstraint2.symbols new file mode 100644 index 0000000000000..ee4003d93bc8b --- /dev/null +++ b/tests/baselines/reference/indexedAccessPrivateMemberOfGenericConstraint2.symbols @@ -0,0 +1,327 @@ +//// [tests/cases/compiler/indexedAccessPrivateMemberOfGenericConstraint2.ts] //// + +=== indexedAccessPrivateMemberOfGenericConstraint2.ts === +class A { +>A : Symbol(A, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 0, 0)) + + declare private a: { foo: number }; +>a : Symbol(A.a, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 0, 9)) +>foo : Symbol(foo, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 1, 22)) +} + +class B { +>B : Symbol(B, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 2, 1)) + + declare private a: { bar: string }; +>a : Symbol(B.a, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 4, 9)) +>bar : Symbol(bar, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 5, 22)) +} + +type X = [T["a"], (T | B)["a"]]; +>X : Symbol(X, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 6, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 8, 7)) +>A : Symbol(A, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 0, 0)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 8, 7)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 8, 7)) +>B : Symbol(B, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 2, 1)) + +type Y = T["a"]; +>Y : Symbol(Y, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 8, 45)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 9, 7)) +>A : Symbol(A, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 0, 0)) +>B : Symbol(B, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 2, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 9, 7)) + +type Z = T["a"]; +>Z : Symbol(Z, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 9, 33)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 10, 7)) +>A : Symbol(A, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 0, 0)) +>B : Symbol(B, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 2, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 10, 7)) + +type R = (T | T2)["a"]; +>R : Symbol(R, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 10, 33)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 11, 7)) +>A : Symbol(A, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 0, 0)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 11, 19)) +>B : Symbol(B, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 2, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 11, 7)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 11, 19)) + +type S = (T | T2)["a"]; +>S : Symbol(S, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 11, 50)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 12, 7)) +>B : Symbol(B, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 2, 1)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 12, 19)) +>A : Symbol(A, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 0, 0)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 12, 7)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 12, 19)) + +type U = (T & B)["a"]; +>U : Symbol(U, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 12, 50)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 13, 7)) +>A : Symbol(A, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 0, 0)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 13, 7)) +>B : Symbol(B, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 2, 1)) + +type V = (T & T2)["a"]; +>V : Symbol(V, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 13, 35)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 14, 7)) +>A : Symbol(A, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 0, 0)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 14, 19)) +>B : Symbol(B, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 2, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 14, 7)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 14, 19)) + +type W = (T & T2)["a"]; +>W : Symbol(W, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 14, 50)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 15, 7)) +>B : Symbol(B, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 2, 1)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 15, 19)) +>A : Symbol(A, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 0, 0)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 15, 7)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 15, 19)) + +class C { +>C : Symbol(C, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 15, 50)) + + declare private a: { foo: number }; +>a : Symbol(C.a, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 17, 9)) +>foo : Symbol(foo, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 18, 22)) +} + +class D { +>D : Symbol(D, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 19, 1)) + + declare a: { bar: string }; +>a : Symbol(D.a, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 21, 9)) +>bar : Symbol(bar, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 22, 14)) +} + +type X2 = [T["a"], (T | D)["a"]]; +>X2 : Symbol(X2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 23, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 25, 8)) +>C : Symbol(C, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 15, 50)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 25, 8)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 25, 8)) +>D : Symbol(D, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 19, 1)) + +type Y2 = T["a"]; +>Y2 : Symbol(Y2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 25, 46)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 26, 8)) +>C : Symbol(C, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 15, 50)) +>D : Symbol(D, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 19, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 26, 8)) + +type Z2 = T["a"]; +>Z2 : Symbol(Z2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 26, 34)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 27, 8)) +>C : Symbol(C, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 15, 50)) +>D : Symbol(D, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 19, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 27, 8)) + +type R2 = (T | T2)["a"]; +>R2 : Symbol(R2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 27, 34)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 28, 8)) +>C : Symbol(C, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 15, 50)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 28, 20)) +>D : Symbol(D, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 19, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 28, 8)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 28, 20)) + +type S2 = (T | T2)["a"]; +>S2 : Symbol(S2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 28, 51)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 29, 8)) +>D : Symbol(D, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 19, 1)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 29, 20)) +>C : Symbol(C, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 15, 50)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 29, 8)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 29, 20)) + +type U2 = (T & D)["a"]; +>U2 : Symbol(U2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 29, 51)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 30, 8)) +>C : Symbol(C, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 15, 50)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 30, 8)) +>D : Symbol(D, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 19, 1)) + +type V2 = (T & T2)["a"]; +>V2 : Symbol(V2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 30, 36)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 31, 8)) +>C : Symbol(C, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 15, 50)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 31, 20)) +>D : Symbol(D, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 19, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 31, 8)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 31, 20)) + +type W2 = (T & T2)["a"]; +>W2 : Symbol(W2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 31, 51)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 32, 8)) +>D : Symbol(D, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 19, 1)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 32, 20)) +>C : Symbol(C, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 15, 50)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 32, 8)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 32, 20)) + +class E { +>E : Symbol(E, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 32, 51)) + + declare a: { foo: number }; +>a : Symbol(E.a, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 34, 9)) +>foo : Symbol(foo, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 35, 14)) +} + +class F { +>F : Symbol(F, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 36, 1)) + + declare private a: { bar: string }; +>a : Symbol(F.a, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 38, 9)) +>bar : Symbol(bar, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 39, 22)) +} + +type X3 = [T["a"], (T | F)["a"]]; +>X3 : Symbol(X3, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 40, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 42, 8)) +>E : Symbol(E, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 32, 51)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 42, 8)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 42, 8)) +>F : Symbol(F, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 36, 1)) + +type Y3 = T["a"]; +>Y3 : Symbol(Y3, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 42, 46)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 43, 8)) +>E : Symbol(E, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 32, 51)) +>F : Symbol(F, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 36, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 43, 8)) + +type Z3 = T["a"]; +>Z3 : Symbol(Z3, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 43, 34)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 44, 8)) +>E : Symbol(E, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 32, 51)) +>F : Symbol(F, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 36, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 44, 8)) + +type R3 = (T | T2)["a"]; +>R3 : Symbol(R3, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 44, 34)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 45, 8)) +>E : Symbol(E, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 32, 51)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 45, 20)) +>F : Symbol(F, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 36, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 45, 8)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 45, 20)) + +type S3 = (T | T2)["a"]; +>S3 : Symbol(S3, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 45, 51)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 46, 8)) +>F : Symbol(F, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 36, 1)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 46, 20)) +>E : Symbol(E, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 32, 51)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 46, 8)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 46, 20)) + +type U3 = (T & F)["a"]; +>U3 : Symbol(U3, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 46, 51)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 47, 8)) +>E : Symbol(E, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 32, 51)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 47, 8)) +>F : Symbol(F, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 36, 1)) + +type V3 = (T & T2)["a"]; +>V3 : Symbol(V3, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 47, 36)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 48, 8)) +>E : Symbol(E, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 32, 51)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 48, 20)) +>F : Symbol(F, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 36, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 48, 8)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 48, 20)) + +type W3 = (T & T2)["a"]; +>W3 : Symbol(W3, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 48, 51)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 49, 8)) +>F : Symbol(F, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 36, 1)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 49, 20)) +>E : Symbol(E, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 32, 51)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 49, 8)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 49, 20)) + +class G { +>G : Symbol(G, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 49, 51)) + + declare b: { foo: number }; +>b : Symbol(G.b, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 51, 9)) +>foo : Symbol(foo, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 52, 14)) +} + +class H { +>H : Symbol(H, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 53, 1)) + + declare private a: { bar: string }; +>a : Symbol(H.a, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 55, 9)) +>bar : Symbol(bar, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 56, 22)) +} + +type X4 = [T["a"], (T | H)["a"]]; +>X4 : Symbol(X4, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 57, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 59, 8)) +>G : Symbol(G, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 49, 51)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 59, 8)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 59, 8)) +>H : Symbol(H, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 53, 1)) + +type Y4 = T["a"]; +>Y4 : Symbol(Y4, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 59, 46)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 60, 8)) +>G : Symbol(G, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 49, 51)) +>H : Symbol(H, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 53, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 60, 8)) + +type Z4 = T["a"]; +>Z4 : Symbol(Z4, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 60, 34)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 61, 8)) +>G : Symbol(G, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 49, 51)) +>H : Symbol(H, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 53, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 61, 8)) + +type R4 = (T | T2)["a"]; +>R4 : Symbol(R4, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 61, 34)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 62, 8)) +>G : Symbol(G, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 49, 51)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 62, 20)) +>H : Symbol(H, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 53, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 62, 8)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 62, 20)) + +type S4 = (T | T2)["a"]; +>S4 : Symbol(S4, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 62, 51)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 63, 8)) +>H : Symbol(H, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 53, 1)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 63, 20)) +>G : Symbol(G, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 49, 51)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 63, 8)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 63, 20)) + +type U4 = (T & H)["a"]; +>U4 : Symbol(U4, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 63, 51)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 64, 8)) +>G : Symbol(G, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 49, 51)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 64, 8)) +>H : Symbol(H, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 53, 1)) + +type V4 = (T & T2)["a"]; +>V4 : Symbol(V4, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 64, 36)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 65, 8)) +>G : Symbol(G, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 49, 51)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 65, 20)) +>H : Symbol(H, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 53, 1)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 65, 8)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 65, 20)) + +type W4 = (T & T2)["a"]; +>W4 : Symbol(W4, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 65, 51)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 66, 8)) +>H : Symbol(H, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 53, 1)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 66, 20)) +>G : Symbol(G, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 49, 51)) +>T : Symbol(T, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 66, 8)) +>T2 : Symbol(T2, Decl(indexedAccessPrivateMemberOfGenericConstraint2.ts, 66, 20)) + diff --git a/tests/baselines/reference/indexedAccessPrivateMemberOfGenericConstraint2.types b/tests/baselines/reference/indexedAccessPrivateMemberOfGenericConstraint2.types new file mode 100644 index 0000000000000..0e7b3d4241d95 --- /dev/null +++ b/tests/baselines/reference/indexedAccessPrivateMemberOfGenericConstraint2.types @@ -0,0 +1,219 @@ +//// [tests/cases/compiler/indexedAccessPrivateMemberOfGenericConstraint2.ts] //// + +=== indexedAccessPrivateMemberOfGenericConstraint2.ts === +class A { +>A : A +> : ^ + + declare private a: { foo: number }; +>a : { foo: number; } +> : ^^^^^^^ ^^^ +>foo : number +> : ^^^^^^ +} + +class B { +>B : B +> : ^ + + declare private a: { bar: string }; +>a : { bar: string; } +> : ^^^^^^^ ^^^ +>bar : string +> : ^^^^^^ +} + +type X = [T["a"], (T | B)["a"]]; +>X : X +> : ^^^^ + +type Y = T["a"]; +>Y : Y +> : ^^^^ + +type Z = T["a"]; +>Z : Z +> : ^^^^ + +type R = (T | T2)["a"]; +>R : R +> : ^^^^^^^^ + +type S = (T | T2)["a"]; +>S : S +> : ^^^^^^^^ + +type U = (T & B)["a"]; +>U : never +> : ^^^^^ + +type V = (T & T2)["a"]; +>V : never +> : ^^^^^ + +type W = (T & T2)["a"]; +>W : never +> : ^^^^^ + +class C { +>C : C +> : ^ + + declare private a: { foo: number }; +>a : { foo: number; } +> : ^^^^^^^ ^^^ +>foo : number +> : ^^^^^^ +} + +class D { +>D : D +> : ^ + + declare a: { bar: string }; +>a : { bar: string; } +> : ^^^^^^^ ^^^ +>bar : string +> : ^^^^^^ +} + +type X2 = [T["a"], (T | D)["a"]]; +>X2 : X2 +> : ^^^^^ + +type Y2 = T["a"]; +>Y2 : Y2 +> : ^^^^^ + +type Z2 = T["a"]; +>Z2 : Z2 +> : ^^^^^ + +type R2 = (T | T2)["a"]; +>R2 : R2 +> : ^^^^^^^^^ + +type S2 = (T | T2)["a"]; +>S2 : S2 +> : ^^^^^^^^^ + +type U2 = (T & D)["a"]; +>U2 : never +> : ^^^^^ + +type V2 = (T & T2)["a"]; +>V2 : never +> : ^^^^^ + +type W2 = (T & T2)["a"]; +>W2 : never +> : ^^^^^ + +class E { +>E : E +> : ^ + + declare a: { foo: number }; +>a : { foo: number; } +> : ^^^^^^^ ^^^ +>foo : number +> : ^^^^^^ +} + +class F { +>F : F +> : ^ + + declare private a: { bar: string }; +>a : { bar: string; } +> : ^^^^^^^ ^^^ +>bar : string +> : ^^^^^^ +} + +type X3 = [T["a"], (T | F)["a"]]; +>X3 : X3 +> : ^^^^^ + +type Y3 = T["a"]; +>Y3 : Y3 +> : ^^^^^ + +type Z3 = T["a"]; +>Z3 : Z3 +> : ^^^^^ + +type R3 = (T | T2)["a"]; +>R3 : R3 +> : ^^^^^^^^^ + +type S3 = (T | T2)["a"]; +>S3 : S3 +> : ^^^^^^^^^ + +type U3 = (T & F)["a"]; +>U3 : never +> : ^^^^^ + +type V3 = (T & T2)["a"]; +>V3 : never +> : ^^^^^ + +type W3 = (T & T2)["a"]; +>W3 : never +> : ^^^^^ + +class G { +>G : G +> : ^ + + declare b: { foo: number }; +>b : { foo: number; } +> : ^^^^^^^ ^^^ +>foo : number +> : ^^^^^^ +} + +class H { +>H : H +> : ^ + + declare private a: { bar: string }; +>a : { bar: string; } +> : ^^^^^^^ ^^^ +>bar : string +> : ^^^^^^ +} + +type X4 = [T["a"], (T | H)["a"]]; +>X4 : X4 +> : ^^^^^ + +type Y4 = T["a"]; +>Y4 : Y4 +> : ^^^^^ + +type Z4 = T["a"]; +>Z4 : Z4 +> : ^^^^^ + +type R4 = (T | T2)["a"]; +>R4 : R4 +> : ^^^^^^^^^ + +type S4 = (T | T2)["a"]; +>S4 : S4 +> : ^^^^^^^^^ + +type U4 = (T & H)["a"]; +>U4 : U4 +> : ^^^^^ + +type V4 = (T & T2)["a"]; +>V4 : V4 +> : ^^^^^^^^^ + +type W4 = (T & T2)["a"]; +>W4 : W4 +> : ^^^^^^^^^ + diff --git a/tests/cases/compiler/indexedAccessPrivateMemberOfGenericConstraint.ts b/tests/cases/compiler/indexedAccessPrivateMemberOfGenericConstraint.ts index a2fa8f4a46967..bd5d20c9c2430 100644 --- a/tests/cases/compiler/indexedAccessPrivateMemberOfGenericConstraint.ts +++ b/tests/cases/compiler/indexedAccessPrivateMemberOfGenericConstraint.ts @@ -9,3 +9,59 @@ class B { type X = [T["a"], (T | B)["a"]]; type Y = T["a"]; type Z = T["a"]; +type R = (T | T2)["a"]; +type S = (T | T2)["a"]; +type U = (T & B)["a"]; +type V = (T & T2)["a"]; +type W = (T & T2)["a"]; + +class C { + declare private a: number; +} + +class D { + declare a: string; +} + +type X2 = [T["a"], (T | D)["a"]]; +type Y2 = T["a"]; +type Z2 = T["a"]; +type R2 = (T | T2)["a"]; +type S2 = (T | T2)["a"]; +type U2 = (T & D)["a"]; +type V2 = (T & T2)["a"]; +type W2 = (T & T2)["a"]; + +class E { + declare a: number; +} + +class F { + declare private a: string; +} + +type X3 = [T["a"], (T | F)["a"]]; +type Y3 = T["a"]; +type Z3 = T["a"]; +type R3 = (T | T2)["a"]; +type S3 = (T | T2)["a"]; +type U3 = (T & F)["a"]; +type V3 = (T & T2)["a"]; +type W3 = (T & T2)["a"]; + +class G { + declare b: number; +} + +class H { + declare private a: string; +} + +type X4 = [T["a"], (T | H)["a"]]; +type Y4 = T["a"]; +type Z4 = T["a"]; +type R4 = (T | T2)["a"]; +type S4 = (T | T2)["a"]; +type U4 = (T & H)["a"]; +type V4 = (T & T2)["a"]; +type W4 = (T & T2)["a"]; diff --git a/tests/cases/compiler/indexedAccessPrivateMemberOfGenericConstraint2.ts b/tests/cases/compiler/indexedAccessPrivateMemberOfGenericConstraint2.ts new file mode 100644 index 0000000000000..863b2ccc1300e --- /dev/null +++ b/tests/cases/compiler/indexedAccessPrivateMemberOfGenericConstraint2.ts @@ -0,0 +1,67 @@ +class A { + declare private a: { foo: number }; +} + +class B { + declare private a: { bar: string }; +} + +type X = [T["a"], (T | B)["a"]]; +type Y = T["a"]; +type Z = T["a"]; +type R = (T | T2)["a"]; +type S = (T | T2)["a"]; +type U = (T & B)["a"]; +type V = (T & T2)["a"]; +type W = (T & T2)["a"]; + +class C { + declare private a: { foo: number }; +} + +class D { + declare a: { bar: string }; +} + +type X2 = [T["a"], (T | D)["a"]]; +type Y2 = T["a"]; +type Z2 = T["a"]; +type R2 = (T | T2)["a"]; +type S2 = (T | T2)["a"]; +type U2 = (T & D)["a"]; +type V2 = (T & T2)["a"]; +type W2 = (T & T2)["a"]; + +class E { + declare a: { foo: number }; +} + +class F { + declare private a: { bar: string }; +} + +type X3 = [T["a"], (T | F)["a"]]; +type Y3 = T["a"]; +type Z3 = T["a"]; +type R3 = (T | T2)["a"]; +type S3 = (T | T2)["a"]; +type U3 = (T & F)["a"]; +type V3 = (T & T2)["a"]; +type W3 = (T & T2)["a"]; + +class G { + declare b: { foo: number }; +} + +class H { + declare private a: { bar: string }; +} + +type X4 = [T["a"], (T | H)["a"]]; +type Y4 = T["a"]; +type Z4 = T["a"]; +type R4 = (T | T2)["a"]; +type S4 = (T | T2)["a"]; +type U4 = (T & H)["a"]; +type V4 = (T & T2)["a"]; +type W4 = (T & T2)["a"];