mirror of
https://github.com/microsoft/TypeScript.git
synced 2025-11-18 17:21:48 +00:00
Variant accessors (#42425)
Allows accessors to have different access modifiers and types Fixes #2845, #2521
This commit is contained in:
+99
-66
@@ -8855,7 +8855,7 @@ namespace ts {
|
||||
return links.type;
|
||||
}
|
||||
|
||||
function getTypeOfVariableOrParameterOrPropertyWorker(symbol: Symbol) {
|
||||
function getTypeOfVariableOrParameterOrPropertyWorker(symbol: Symbol): Type {
|
||||
// Handle prototype property
|
||||
if (symbol.flags & SymbolFlags.Prototype) {
|
||||
return getTypeOfPrototypeProperty(symbol);
|
||||
@@ -8905,7 +8905,7 @@ namespace ts {
|
||||
}
|
||||
return reportCircularityError(symbol);
|
||||
}
|
||||
let type: Type | undefined;
|
||||
let type: Type;
|
||||
if (declaration.kind === SyntaxKind.ExportAssignment) {
|
||||
type = widenTypeForVariableLikeDeclaration(checkExpressionCached((<ExportAssignment>declaration).expression), declaration);
|
||||
}
|
||||
@@ -8962,7 +8962,7 @@ namespace ts {
|
||||
type = getTypeOfEnumMember(symbol);
|
||||
}
|
||||
else if (isAccessor(declaration)) {
|
||||
type = resolveTypeOfAccessors(symbol);
|
||||
type = resolveTypeOfAccessors(symbol) || Debug.fail("Non-write accessor resolution must always produce a type");
|
||||
}
|
||||
else {
|
||||
return Debug.fail("Unhandled declaration kind! " + Debug.formatSyntaxKind(declaration.kind) + " for " + Debug.formatSymbol(symbol));
|
||||
@@ -9008,15 +9008,20 @@ namespace ts {
|
||||
|
||||
function getTypeOfAccessors(symbol: Symbol): Type {
|
||||
const links = getSymbolLinks(symbol);
|
||||
return links.type || (links.type = getTypeOfAccessorsWorker(symbol));
|
||||
return links.type || (links.type = getTypeOfAccessorsWorker(symbol) || Debug.fail("Read type of accessor must always produce a type"));
|
||||
}
|
||||
|
||||
function getTypeOfAccessorsWorker(symbol: Symbol): Type {
|
||||
function getTypeOfSetAccessor(symbol: Symbol): Type | undefined {
|
||||
const links = getSymbolLinks(symbol);
|
||||
return links.writeType || (links.writeType = getTypeOfAccessorsWorker(symbol, /*isWrite*/ true));
|
||||
}
|
||||
|
||||
function getTypeOfAccessorsWorker(symbol: Symbol, writing = false): Type | undefined {
|
||||
if (!pushTypeResolution(symbol, TypeSystemPropertyName.Type)) {
|
||||
return errorType;
|
||||
}
|
||||
|
||||
let type = resolveTypeOfAccessors(symbol);
|
||||
let type = resolveTypeOfAccessors(symbol, writing);
|
||||
|
||||
if (!popTypeResolution()) {
|
||||
type = anyType;
|
||||
@@ -9028,49 +9033,63 @@ namespace ts {
|
||||
return type;
|
||||
}
|
||||
|
||||
function resolveTypeOfAccessors(symbol: Symbol) {
|
||||
function resolveTypeOfAccessors(symbol: Symbol, isWrite = false) {
|
||||
const getter = getDeclarationOfKind<AccessorDeclaration>(symbol, SyntaxKind.GetAccessor);
|
||||
const setter = getDeclarationOfKind<AccessorDeclaration>(symbol, SyntaxKind.SetAccessor);
|
||||
|
||||
// For write operations, prioritize type annotations on the setter
|
||||
if (isWrite) {
|
||||
const setterParameterType = getAnnotatedAccessorType(setter);
|
||||
if (setterParameterType) {
|
||||
const flags = getCheckFlags(symbol);
|
||||
if (flags & CheckFlags.Instantiated) {
|
||||
const links = getSymbolLinks(symbol);
|
||||
return instantiateType(setterParameterType, links.mapper);
|
||||
}
|
||||
return setterParameterType;
|
||||
}
|
||||
}
|
||||
// Else defer to the getter type
|
||||
|
||||
if (getter && isInJSFile(getter)) {
|
||||
const jsDocType = getTypeForDeclarationFromJSDocComment(getter);
|
||||
if (jsDocType) {
|
||||
return jsDocType;
|
||||
}
|
||||
}
|
||||
// First try to see if the user specified a return type on the get-accessor.
|
||||
|
||||
// Try to see if the user specified a return type on the get-accessor.
|
||||
const getterReturnType = getAnnotatedAccessorType(getter);
|
||||
if (getterReturnType) {
|
||||
return getterReturnType;
|
||||
}
|
||||
else {
|
||||
// If the user didn't specify a return type, try to use the set-accessor's parameter type.
|
||||
const setterParameterType = getAnnotatedAccessorType(setter);
|
||||
if (setterParameterType) {
|
||||
return setterParameterType;
|
||||
}
|
||||
else {
|
||||
// If there are no specified types, try to infer it from the body of the get accessor if it exists.
|
||||
if (getter && getter.body) {
|
||||
return getReturnTypeFromBody(getter);
|
||||
}
|
||||
// Otherwise, fall back to 'any'.
|
||||
else {
|
||||
if (setter) {
|
||||
if (!isPrivateWithinAmbient(setter)) {
|
||||
errorOrSuggestion(noImplicitAny, setter, Diagnostics.Property_0_implicitly_has_type_any_because_its_set_accessor_lacks_a_parameter_type_annotation, symbolToString(symbol));
|
||||
}
|
||||
}
|
||||
else {
|
||||
Debug.assert(!!getter, "there must exist a getter as we are current checking either setter or getter in this function");
|
||||
if (!isPrivateWithinAmbient(getter)) {
|
||||
errorOrSuggestion(noImplicitAny, getter, Diagnostics.Property_0_implicitly_has_type_any_because_its_get_accessor_lacks_a_return_type_annotation, symbolToString(symbol));
|
||||
}
|
||||
}
|
||||
return anyType;
|
||||
}
|
||||
}
|
||||
|
||||
// If the user didn't specify a return type, try to use the set-accessor's parameter type.
|
||||
const setterParameterType = getAnnotatedAccessorType(setter);
|
||||
if (setterParameterType) {
|
||||
return setterParameterType;
|
||||
}
|
||||
|
||||
// If there are no specified types, try to infer it from the body of the get accessor if it exists.
|
||||
if (getter && getter.body) {
|
||||
return getReturnTypeFromBody(getter);
|
||||
}
|
||||
|
||||
// Otherwise, fall back to 'any'.
|
||||
if (setter) {
|
||||
if (!isPrivateWithinAmbient(setter)) {
|
||||
errorOrSuggestion(noImplicitAny, setter, Diagnostics.Property_0_implicitly_has_type_any_because_its_set_accessor_lacks_a_parameter_type_annotation, symbolToString(symbol));
|
||||
}
|
||||
return anyType;
|
||||
}
|
||||
else if (getter) {
|
||||
Debug.assert(!!getter, "there must exist a getter as we are current checking either setter or getter in this function");
|
||||
if (!isPrivateWithinAmbient(getter)) {
|
||||
errorOrSuggestion(noImplicitAny, getter, Diagnostics.Property_0_implicitly_has_type_any_because_its_get_accessor_lacks_a_return_type_annotation, symbolToString(symbol));
|
||||
}
|
||||
return anyType;
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
function getBaseTypeVariableOfClass(symbol: Symbol) {
|
||||
@@ -9197,6 +9216,16 @@ namespace ts {
|
||||
return links.type;
|
||||
}
|
||||
|
||||
function getSetAccessorTypeOfSymbol(symbol: Symbol): Type {
|
||||
if (symbol.flags & SymbolFlags.Accessor) {
|
||||
const type = getTypeOfSetAccessor(symbol);
|
||||
if (type) {
|
||||
return type;
|
||||
}
|
||||
}
|
||||
return getTypeOfSymbol(symbol);
|
||||
}
|
||||
|
||||
function getTypeOfSymbol(symbol: Symbol): Type {
|
||||
const checkFlags = getCheckFlags(symbol);
|
||||
if (checkFlags & CheckFlags.DeferredType) {
|
||||
@@ -26589,8 +26618,9 @@ namespace ts {
|
||||
*/
|
||||
function checkPropertyAccessibility(
|
||||
node: PropertyAccessExpression | QualifiedName | PropertyAccessExpression | VariableDeclaration | ParameterDeclaration | ImportTypeNode | PropertyAssignment | ShorthandPropertyAssignment | BindingElement,
|
||||
isSuper: boolean, type: Type, prop: Symbol, reportError = true): boolean {
|
||||
const flags = getDeclarationModifierFlagsFromSymbol(prop);
|
||||
isSuper: boolean, isWrite: boolean, type: Type, prop: Symbol, reportError = true): boolean {
|
||||
|
||||
const flags = getDeclarationModifierFlagsFromSymbol(prop, isWrite);
|
||||
const errorNode = node.kind === SyntaxKind.QualifiedName ? node.right :
|
||||
node.kind === SyntaxKind.ImportType ? node :
|
||||
node.kind === SyntaxKind.BindingElement && node.propertyName ? node.propertyName : node.name;
|
||||
@@ -26965,13 +26995,16 @@ namespace ts {
|
||||
checkPropertyNotUsedBeforeDeclaration(prop, node, right);
|
||||
markPropertyAsReferenced(prop, node, isSelfTypeAccess(left, parentSymbol));
|
||||
getNodeLinks(node).resolvedSymbol = prop;
|
||||
checkPropertyAccessibility(node, left.kind === SyntaxKind.SuperKeyword, apparentType, prop);
|
||||
const isWrite = isWriteAccess(node);
|
||||
checkPropertyAccessibility(node, left.kind === SyntaxKind.SuperKeyword, isWrite, apparentType, prop);
|
||||
if (isAssignmentToReadonlyEntity(node as Expression, prop, assignmentKind)) {
|
||||
error(right, Diagnostics.Cannot_assign_to_0_because_it_is_a_read_only_property, idText(right));
|
||||
return errorType;
|
||||
}
|
||||
propType = isThisPropertyAccessInConstructor(node, prop) ? autoType : getTypeOfSymbol(prop);
|
||||
|
||||
propType = isThisPropertyAccessInConstructor(node, prop) ? autoType : isWrite ? getSetAccessorTypeOfSymbol(prop) : getTypeOfSymbol(prop);
|
||||
}
|
||||
|
||||
return getFlowTypeOfAccessExpression(node, prop, propType, right, checkMode);
|
||||
}
|
||||
|
||||
@@ -27361,7 +27394,7 @@ namespace ts {
|
||||
const declClass = getContainingClass(prop.valueDeclaration);
|
||||
return !isOptionalChain(node) && !!findAncestor(node, parent => parent === declClass);
|
||||
}
|
||||
return checkPropertyAccessibility(node, isSuper, type, prop, /* reportError */ false);
|
||||
return checkPropertyAccessibility(node, isSuper, /*isWrite*/ false, type, prop, /* reportError */ false);
|
||||
}
|
||||
// In js files properties of unions are allowed in completion
|
||||
return isInJSFile(node) && (type.flags & TypeFlags.Union) !== 0 && (<UnionType>type).types.some(elementType => isValidPropertyAccessWithType(node, isSuper, propertyName, elementType));
|
||||
@@ -31000,7 +31033,7 @@ namespace ts {
|
||||
const prop = getPropertyOfType(objectLiteralType, text);
|
||||
if (prop) {
|
||||
markPropertyAsReferenced(prop, property, rightIsThis);
|
||||
checkPropertyAccessibility(property, /*isSuper*/ false, objectLiteralType, prop);
|
||||
checkPropertyAccessibility(property, /*isSuper*/ false, /*isWrite*/ true, objectLiteralType, prop);
|
||||
}
|
||||
}
|
||||
const elementType = getIndexedAccessType(objectLiteralType, exprType, /*noUncheckedIndexedAccessCandidate*/ undefined, name, /*aliasSymbol*/ undefined, /*aliasTypeArguments*/ undefined, AccessFlags.ExpressionPosition);
|
||||
@@ -33014,22 +33047,25 @@ namespace ts {
|
||||
if (hasBindableName(node)) {
|
||||
// TypeScript 1.0 spec (April 2014): 8.4.3
|
||||
// Accessors for the same member name must specify the same accessibility.
|
||||
const otherKind = node.kind === SyntaxKind.GetAccessor ? SyntaxKind.SetAccessor : SyntaxKind.GetAccessor;
|
||||
const otherAccessor = getDeclarationOfKind<AccessorDeclaration>(getSymbolOfNode(node), otherKind);
|
||||
if (otherAccessor) {
|
||||
const nodeFlags = getEffectiveModifierFlags(node);
|
||||
const otherFlags = getEffectiveModifierFlags(otherAccessor);
|
||||
if ((nodeFlags & ModifierFlags.AccessibilityModifier) !== (otherFlags & ModifierFlags.AccessibilityModifier)) {
|
||||
error(node.name, Diagnostics.Getter_and_setter_accessors_do_not_agree_in_visibility);
|
||||
}
|
||||
if ((nodeFlags & ModifierFlags.Abstract) !== (otherFlags & ModifierFlags.Abstract)) {
|
||||
const symbol = getSymbolOfNode(node);
|
||||
const getter = getDeclarationOfKind<AccessorDeclaration>(symbol, SyntaxKind.GetAccessor);
|
||||
const setter = getDeclarationOfKind<AccessorDeclaration>(symbol, SyntaxKind.SetAccessor);
|
||||
if (getter && setter) {
|
||||
const getterFlags = getEffectiveModifierFlags(getter);
|
||||
const setterFlags = getEffectiveModifierFlags(setter);
|
||||
if ((getterFlags & ModifierFlags.Abstract) !== (setterFlags & ModifierFlags.Abstract)) {
|
||||
error(node.name, Diagnostics.Accessors_must_both_be_abstract_or_non_abstract);
|
||||
}
|
||||
if (((getterFlags & ModifierFlags.Protected) && !(setterFlags & (ModifierFlags.Protected | ModifierFlags.Private))) ||
|
||||
((getterFlags & ModifierFlags.Private) && !(setterFlags & ModifierFlags.Private))) {
|
||||
error(node.name, Diagnostics.A_get_accessor_must_be_at_least_as_accessible_as_the_setter);
|
||||
}
|
||||
|
||||
// TypeScript 1.0 spec (April 2014): 4.5
|
||||
// If both accessors include type annotations, the specified types must be identical.
|
||||
checkAccessorDeclarationTypesIdentical(node, otherAccessor, getAnnotatedAccessorType, Diagnostics.get_and_set_accessor_must_have_the_same_type);
|
||||
checkAccessorDeclarationTypesIdentical(node, otherAccessor, getThisTypeOfDeclaration, Diagnostics.get_and_set_accessor_must_have_the_same_this_type);
|
||||
const getterType = getAnnotatedAccessorType(getter);
|
||||
const setterType = getAnnotatedAccessorType(setter);
|
||||
if (getterType && setterType) {
|
||||
checkTypeAssignableTo(getterType, setterType, getter, Diagnostics.The_return_type_of_a_get_accessor_must_be_assignable_to_its_set_accessor_type);
|
||||
}
|
||||
}
|
||||
}
|
||||
const returnType = getTypeOfAccessors(getSymbolOfNode(node));
|
||||
@@ -33041,14 +33077,6 @@ namespace ts {
|
||||
setNodeLinksForPrivateIdentifierScope(node);
|
||||
}
|
||||
|
||||
function checkAccessorDeclarationTypesIdentical(first: AccessorDeclaration, second: AccessorDeclaration, getAnnotatedType: (a: AccessorDeclaration) => Type | undefined, message: DiagnosticMessage) {
|
||||
const firstType = getAnnotatedType(first);
|
||||
const secondType = getAnnotatedType(second);
|
||||
if (firstType && secondType && !isTypeIdenticalTo(firstType, secondType)) {
|
||||
error(first, message);
|
||||
}
|
||||
}
|
||||
|
||||
function checkMissingDeclaration(node: Node) {
|
||||
checkDecorators(node);
|
||||
}
|
||||
@@ -34968,7 +34996,7 @@ namespace ts {
|
||||
const property = getPropertyOfType(parentType, nameText);
|
||||
if (property) {
|
||||
markPropertyAsReferenced(property, /*nodeForCheckWriteOnly*/ undefined, /*isSelfTypeAccess*/ false); // A destructuring is never a write-only reference.
|
||||
checkPropertyAccessibility(node, !!parent.initializer && parent.initializer.kind === SyntaxKind.SuperKeyword, parentType, property);
|
||||
checkPropertyAccessibility(node, !!parent.initializer && parent.initializer.kind === SyntaxKind.SuperKeyword, /*isWrite*/ false, parentType, property);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -41056,7 +41084,7 @@ namespace ts {
|
||||
}
|
||||
|
||||
function checkGrammarAccessor(accessor: AccessorDeclaration): boolean {
|
||||
if (!(accessor.flags & NodeFlags.Ambient)) {
|
||||
if (!(accessor.flags & NodeFlags.Ambient) && (accessor.parent.kind !== SyntaxKind.TypeLiteral) && (accessor.parent.kind !== SyntaxKind.InterfaceDeclaration)) {
|
||||
if (languageVersion < ScriptTarget.ES5) {
|
||||
return grammarErrorOnNode(accessor.name, Diagnostics.Accessors_are_only_available_when_targeting_ECMAScript_5_and_higher);
|
||||
}
|
||||
@@ -41067,8 +41095,13 @@ namespace ts {
|
||||
return grammarErrorAtPos(accessor, accessor.end - 1, ";".length, Diagnostics._0_expected, "{");
|
||||
}
|
||||
}
|
||||
if (accessor.body && hasSyntacticModifier(accessor, ModifierFlags.Abstract)) {
|
||||
return grammarErrorOnNode(accessor, Diagnostics.An_abstract_accessor_cannot_have_an_implementation);
|
||||
if (accessor.body) {
|
||||
if (hasSyntacticModifier(accessor, ModifierFlags.Abstract)) {
|
||||
return grammarErrorOnNode(accessor, Diagnostics.An_abstract_accessor_cannot_have_an_implementation);
|
||||
}
|
||||
if (accessor.parent.kind === SyntaxKind.TypeLiteral || accessor.parent.kind === SyntaxKind.InterfaceDeclaration) {
|
||||
return grammarErrorOnNode(accessor.body, Diagnostics.An_implementation_cannot_be_declared_in_ambient_contexts);
|
||||
}
|
||||
}
|
||||
if (accessor.typeParameters) {
|
||||
return grammarErrorOnNode(accessor.name, Diagnostics.An_accessor_cannot_have_type_parameters);
|
||||
|
||||
@@ -1706,11 +1706,7 @@
|
||||
"category": "Error",
|
||||
"code": 2378
|
||||
},
|
||||
"Getter and setter accessors do not agree in visibility.": {
|
||||
"category": "Error",
|
||||
"code": 2379
|
||||
},
|
||||
"'get' and 'set' accessor must have the same type.": {
|
||||
"The return type of a 'get' accessor must be assignable to its 'set' accessor type": {
|
||||
"category": "Error",
|
||||
"code": 2380
|
||||
},
|
||||
@@ -3308,6 +3304,10 @@
|
||||
"category": "Error",
|
||||
"code": 2807
|
||||
},
|
||||
"A get accessor must be at least as accessible as the setter": {
|
||||
"category": "Error",
|
||||
"code": 2808
|
||||
},
|
||||
|
||||
"Import declaration '{0}' is using private name '{1}'.": {
|
||||
"category": "Error",
|
||||
|
||||
+12
-1
@@ -3213,7 +3213,10 @@ namespace ts {
|
||||
|
||||
function isTypeMemberStart(): boolean {
|
||||
// Return true if we have the start of a signature member
|
||||
if (token() === SyntaxKind.OpenParenToken || token() === SyntaxKind.LessThanToken) {
|
||||
if (token() === SyntaxKind.OpenParenToken ||
|
||||
token() === SyntaxKind.LessThanToken ||
|
||||
token() === SyntaxKind.GetKeyword ||
|
||||
token() === SyntaxKind.SetKeyword) {
|
||||
return true;
|
||||
}
|
||||
let idToken = false;
|
||||
@@ -3254,6 +3257,14 @@ namespace ts {
|
||||
const pos = getNodePos();
|
||||
const hasJSDoc = hasPrecedingJSDocComment();
|
||||
const modifiers = parseModifiers();
|
||||
if (parseContextualModifier(SyntaxKind.GetKeyword)) {
|
||||
return parseAccessorDeclaration(pos, hasJSDoc, /*decorators*/ undefined, modifiers, SyntaxKind.GetAccessor);
|
||||
}
|
||||
|
||||
if (parseContextualModifier(SyntaxKind.SetKeyword)) {
|
||||
return parseAccessorDeclaration(pos, hasJSDoc, /*decorators*/ undefined, modifiers, SyntaxKind.SetAccessor);
|
||||
}
|
||||
|
||||
if (isIndexSignature()) {
|
||||
return parseIndexSignatureDeclaration(pos, hasJSDoc, /*decorators*/ undefined, modifiers);
|
||||
}
|
||||
|
||||
@@ -1482,9 +1482,9 @@ namespace ts {
|
||||
|
||||
// See the comment on MethodDeclaration for the intuition behind GetAccessorDeclaration being a
|
||||
// ClassElement and an ObjectLiteralElement.
|
||||
export interface GetAccessorDeclaration extends FunctionLikeDeclarationBase, ClassElement, ObjectLiteralElement, JSDocContainer {
|
||||
export interface GetAccessorDeclaration extends FunctionLikeDeclarationBase, ClassElement, TypeElement, ObjectLiteralElement, JSDocContainer {
|
||||
readonly kind: SyntaxKind.GetAccessor;
|
||||
readonly parent: ClassLikeDeclaration | ObjectLiteralExpression;
|
||||
readonly parent: ClassLikeDeclaration | ObjectLiteralExpression | TypeLiteralNode | InterfaceDeclaration;
|
||||
readonly name: PropertyName;
|
||||
readonly body?: FunctionBody;
|
||||
/* @internal */ typeParameters?: NodeArray<TypeParameterDeclaration>; // Present for use with reporting a grammar error
|
||||
@@ -1492,9 +1492,9 @@ namespace ts {
|
||||
|
||||
// See the comment on MethodDeclaration for the intuition behind SetAccessorDeclaration being a
|
||||
// ClassElement and an ObjectLiteralElement.
|
||||
export interface SetAccessorDeclaration extends FunctionLikeDeclarationBase, ClassElement, ObjectLiteralElement, JSDocContainer {
|
||||
export interface SetAccessorDeclaration extends FunctionLikeDeclarationBase, ClassElement, TypeElement, ObjectLiteralElement, JSDocContainer {
|
||||
readonly kind: SyntaxKind.SetAccessor;
|
||||
readonly parent: ClassLikeDeclaration | ObjectLiteralExpression;
|
||||
readonly parent: ClassLikeDeclaration | ObjectLiteralExpression | TypeLiteralNode | InterfaceDeclaration;
|
||||
readonly name: PropertyName;
|
||||
readonly body?: FunctionBody;
|
||||
/* @internal */ typeParameters?: NodeArray<TypeParameterDeclaration>; // Present for use with reporting a grammar error
|
||||
@@ -4776,6 +4776,7 @@ namespace ts {
|
||||
immediateTarget?: Symbol; // Immediate target of an alias. May be another alias. Do not access directly, use `checker.getImmediateAliasedSymbol` instead.
|
||||
target?: Symbol; // Resolved (non-alias) target of an alias
|
||||
type?: Type; // Type of value symbol
|
||||
writeType?: Type; // Type of value symbol in write contexts
|
||||
nameType?: Type; // Type associated with a late-bound symbol
|
||||
uniqueESSymbolType?: Type; // UniqueESSymbol type for a symbol
|
||||
declaredType?: Type; // Type of class, interface, enum, type alias, or type parameter
|
||||
|
||||
@@ -5306,9 +5306,10 @@ namespace ts {
|
||||
return symbol.flags & SymbolFlags.Transient ? (<TransientSymbol>symbol).checkFlags : 0;
|
||||
}
|
||||
|
||||
export function getDeclarationModifierFlagsFromSymbol(s: Symbol): ModifierFlags {
|
||||
export function getDeclarationModifierFlagsFromSymbol(s: Symbol, isWrite = false): ModifierFlags {
|
||||
if (s.valueDeclaration) {
|
||||
const flags = getCombinedModifierFlags(s.valueDeclaration);
|
||||
const declaration = (isWrite && s.declarations && find(s.declarations, d => d.kind === SyntaxKind.SetAccessor)) || s.valueDeclaration;
|
||||
const flags = getCombinedModifierFlags(declaration);
|
||||
return s.parent && s.parent.flags & SymbolFlags.Class ? flags : flags & ~ModifierFlags.AccessibilityModifier;
|
||||
}
|
||||
if (getCheckFlags(s) & CheckFlags.Synthetic) {
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
tests/cases/compiler/abstractPropertyNegative.ts(10,18): error TS2380: 'get' and 'set' accessor must have the same type.
|
||||
tests/cases/compiler/abstractPropertyNegative.ts(11,18): error TS2380: 'get' and 'set' accessor must have the same type.
|
||||
tests/cases/compiler/abstractPropertyNegative.ts(10,18): error TS2380: The return type of a 'get' accessor must be assignable to its 'set' accessor type
|
||||
tests/cases/compiler/abstractPropertyNegative.ts(13,7): error TS2515: Non-abstract class 'C' does not implement inherited abstract member 'm' from class 'B'.
|
||||
tests/cases/compiler/abstractPropertyNegative.ts(13,7): error TS2515: Non-abstract class 'C' does not implement inherited abstract member 'mismatch' from class 'B'.
|
||||
tests/cases/compiler/abstractPropertyNegative.ts(13,7): error TS2515: Non-abstract class 'C' does not implement inherited abstract member 'prop' from class 'B'.
|
||||
@@ -19,7 +18,7 @@ tests/cases/compiler/abstractPropertyNegative.ts(40,9): error TS2676: Accessors
|
||||
tests/cases/compiler/abstractPropertyNegative.ts(41,18): error TS2676: Accessors must both be abstract or non-abstract.
|
||||
|
||||
|
||||
==== tests/cases/compiler/abstractPropertyNegative.ts (16 errors) ====
|
||||
==== tests/cases/compiler/abstractPropertyNegative.ts (15 errors) ====
|
||||
interface A {
|
||||
prop: string;
|
||||
m(): string;
|
||||
@@ -31,10 +30,8 @@ tests/cases/compiler/abstractPropertyNegative.ts(41,18): error TS2676: Accessors
|
||||
abstract m(): string;
|
||||
abstract get mismatch(): string;
|
||||
~~~~~~~~
|
||||
!!! error TS2380: 'get' and 'set' accessor must have the same type.
|
||||
!!! error TS2380: The return type of a 'get' accessor must be assignable to its 'set' accessor type
|
||||
abstract set mismatch(val: number); // error, not same type
|
||||
~~~~~~~~
|
||||
!!! error TS2380: 'get' and 'set' accessor must have the same type.
|
||||
}
|
||||
class C extends B {
|
||||
~
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
tests/cases/compiler/accessorBodyInTypeContext.ts(2,15): error TS1183: An implementation cannot be declared in ambient contexts.
|
||||
tests/cases/compiler/accessorBodyInTypeContext.ts(6,21): error TS1183: An implementation cannot be declared in ambient contexts.
|
||||
tests/cases/compiler/accessorBodyInTypeContext.ts(10,15): error TS1183: An implementation cannot be declared in ambient contexts.
|
||||
tests/cases/compiler/accessorBodyInTypeContext.ts(14,21): error TS1183: An implementation cannot be declared in ambient contexts.
|
||||
|
||||
|
||||
==== tests/cases/compiler/accessorBodyInTypeContext.ts (4 errors) ====
|
||||
type A = {
|
||||
get foo() { return 0 }
|
||||
~~~~~~~~~~~~
|
||||
!!! error TS1183: An implementation cannot be declared in ambient contexts.
|
||||
};
|
||||
|
||||
type B = {
|
||||
set foo(v: any) { }
|
||||
~~~
|
||||
!!! error TS1183: An implementation cannot be declared in ambient contexts.
|
||||
};
|
||||
|
||||
interface X {
|
||||
get foo() { return 0 }
|
||||
~~~~~~~~~~~~
|
||||
!!! error TS1183: An implementation cannot be declared in ambient contexts.
|
||||
}
|
||||
|
||||
interface Y {
|
||||
set foo(v: any) { }
|
||||
~~~
|
||||
!!! error TS1183: An implementation cannot be declared in ambient contexts.
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
//// [accessorBodyInTypeContext.ts]
|
||||
type A = {
|
||||
get foo() { return 0 }
|
||||
};
|
||||
|
||||
type B = {
|
||||
set foo(v: any) { }
|
||||
};
|
||||
|
||||
interface X {
|
||||
get foo() { return 0 }
|
||||
}
|
||||
|
||||
interface Y {
|
||||
set foo(v: any) { }
|
||||
}
|
||||
|
||||
|
||||
|
||||
//// [accessorBodyInTypeContext.js]
|
||||
@@ -0,0 +1,34 @@
|
||||
=== tests/cases/compiler/accessorBodyInTypeContext.ts ===
|
||||
type A = {
|
||||
>A : Symbol(A, Decl(accessorBodyInTypeContext.ts, 0, 0))
|
||||
|
||||
get foo() { return 0 }
|
||||
>foo : Symbol(foo, Decl(accessorBodyInTypeContext.ts, 0, 10))
|
||||
|
||||
};
|
||||
|
||||
type B = {
|
||||
>B : Symbol(B, Decl(accessorBodyInTypeContext.ts, 2, 2))
|
||||
|
||||
set foo(v: any) { }
|
||||
>foo : Symbol(foo, Decl(accessorBodyInTypeContext.ts, 4, 10))
|
||||
>v : Symbol(v, Decl(accessorBodyInTypeContext.ts, 5, 12))
|
||||
|
||||
};
|
||||
|
||||
interface X {
|
||||
>X : Symbol(X, Decl(accessorBodyInTypeContext.ts, 6, 2))
|
||||
|
||||
get foo() { return 0 }
|
||||
>foo : Symbol(X.foo, Decl(accessorBodyInTypeContext.ts, 8, 13))
|
||||
}
|
||||
|
||||
interface Y {
|
||||
>Y : Symbol(Y, Decl(accessorBodyInTypeContext.ts, 10, 1))
|
||||
|
||||
set foo(v: any) { }
|
||||
>foo : Symbol(Y.foo, Decl(accessorBodyInTypeContext.ts, 12, 13))
|
||||
>v : Symbol(v, Decl(accessorBodyInTypeContext.ts, 13, 12))
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
=== tests/cases/compiler/accessorBodyInTypeContext.ts ===
|
||||
type A = {
|
||||
>A : A
|
||||
|
||||
get foo() { return 0 }
|
||||
>foo : number
|
||||
>0 : 0
|
||||
|
||||
};
|
||||
|
||||
type B = {
|
||||
>B : B
|
||||
|
||||
set foo(v: any) { }
|
||||
>foo : any
|
||||
>v : any
|
||||
|
||||
};
|
||||
|
||||
interface X {
|
||||
get foo() { return 0 }
|
||||
>foo : number
|
||||
>0 : 0
|
||||
}
|
||||
|
||||
interface Y {
|
||||
set foo(v: any) { }
|
||||
>foo : any
|
||||
>v : any
|
||||
}
|
||||
|
||||
|
||||
@@ -1,58 +0,0 @@
|
||||
tests/cases/conformance/classes/propertyMemberDeclarations/memberAccessorDeclarations/accessorWithMismatchedAccessibilityModifiers.ts(2,9): error TS2379: Getter and setter accessors do not agree in visibility.
|
||||
tests/cases/conformance/classes/propertyMemberDeclarations/memberAccessorDeclarations/accessorWithMismatchedAccessibilityModifiers.ts(5,17): error TS2379: Getter and setter accessors do not agree in visibility.
|
||||
tests/cases/conformance/classes/propertyMemberDeclarations/memberAccessorDeclarations/accessorWithMismatchedAccessibilityModifiers.ts(10,19): error TS2379: Getter and setter accessors do not agree in visibility.
|
||||
tests/cases/conformance/classes/propertyMemberDeclarations/memberAccessorDeclarations/accessorWithMismatchedAccessibilityModifiers.ts(13,17): error TS2379: Getter and setter accessors do not agree in visibility.
|
||||
tests/cases/conformance/classes/propertyMemberDeclarations/memberAccessorDeclarations/accessorWithMismatchedAccessibilityModifiers.ts(18,19): error TS2379: Getter and setter accessors do not agree in visibility.
|
||||
tests/cases/conformance/classes/propertyMemberDeclarations/memberAccessorDeclarations/accessorWithMismatchedAccessibilityModifiers.ts(20,9): error TS2379: Getter and setter accessors do not agree in visibility.
|
||||
tests/cases/conformance/classes/propertyMemberDeclarations/memberAccessorDeclarations/accessorWithMismatchedAccessibilityModifiers.ts(26,26): error TS2379: Getter and setter accessors do not agree in visibility.
|
||||
tests/cases/conformance/classes/propertyMemberDeclarations/memberAccessorDeclarations/accessorWithMismatchedAccessibilityModifiers.ts(28,16): error TS2379: Getter and setter accessors do not agree in visibility.
|
||||
|
||||
|
||||
==== tests/cases/conformance/classes/propertyMemberDeclarations/memberAccessorDeclarations/accessorWithMismatchedAccessibilityModifiers.ts (8 errors) ====
|
||||
class C {
|
||||
get x() {
|
||||
~
|
||||
!!! error TS2379: Getter and setter accessors do not agree in visibility.
|
||||
return 1;
|
||||
}
|
||||
private set x(v) {
|
||||
~
|
||||
!!! error TS2379: Getter and setter accessors do not agree in visibility.
|
||||
}
|
||||
}
|
||||
|
||||
class D {
|
||||
protected get x() {
|
||||
~
|
||||
!!! error TS2379: Getter and setter accessors do not agree in visibility.
|
||||
return 1;
|
||||
}
|
||||
private set x(v) {
|
||||
~
|
||||
!!! error TS2379: Getter and setter accessors do not agree in visibility.
|
||||
}
|
||||
}
|
||||
|
||||
class E {
|
||||
protected set x(v) {
|
||||
~
|
||||
!!! error TS2379: Getter and setter accessors do not agree in visibility.
|
||||
}
|
||||
get x() {
|
||||
~
|
||||
!!! error TS2379: Getter and setter accessors do not agree in visibility.
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
class F {
|
||||
protected static set x(v) {
|
||||
~
|
||||
!!! error TS2379: Getter and setter accessors do not agree in visibility.
|
||||
}
|
||||
static get x() {
|
||||
~
|
||||
!!! error TS2379: Getter and setter accessors do not agree in visibility.
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
+4
-4
@@ -827,15 +827,15 @@ declare namespace ts {
|
||||
readonly kind: SyntaxKind.SemicolonClassElement;
|
||||
readonly parent: ClassLikeDeclaration;
|
||||
}
|
||||
export interface GetAccessorDeclaration extends FunctionLikeDeclarationBase, ClassElement, ObjectLiteralElement, JSDocContainer {
|
||||
export interface GetAccessorDeclaration extends FunctionLikeDeclarationBase, ClassElement, TypeElement, ObjectLiteralElement, JSDocContainer {
|
||||
readonly kind: SyntaxKind.GetAccessor;
|
||||
readonly parent: ClassLikeDeclaration | ObjectLiteralExpression;
|
||||
readonly parent: ClassLikeDeclaration | ObjectLiteralExpression | TypeLiteralNode | InterfaceDeclaration;
|
||||
readonly name: PropertyName;
|
||||
readonly body?: FunctionBody;
|
||||
}
|
||||
export interface SetAccessorDeclaration extends FunctionLikeDeclarationBase, ClassElement, ObjectLiteralElement, JSDocContainer {
|
||||
export interface SetAccessorDeclaration extends FunctionLikeDeclarationBase, ClassElement, TypeElement, ObjectLiteralElement, JSDocContainer {
|
||||
readonly kind: SyntaxKind.SetAccessor;
|
||||
readonly parent: ClassLikeDeclaration | ObjectLiteralExpression;
|
||||
readonly parent: ClassLikeDeclaration | ObjectLiteralExpression | TypeLiteralNode | InterfaceDeclaration;
|
||||
readonly name: PropertyName;
|
||||
readonly body?: FunctionBody;
|
||||
}
|
||||
|
||||
+4
-4
@@ -827,15 +827,15 @@ declare namespace ts {
|
||||
readonly kind: SyntaxKind.SemicolonClassElement;
|
||||
readonly parent: ClassLikeDeclaration;
|
||||
}
|
||||
export interface GetAccessorDeclaration extends FunctionLikeDeclarationBase, ClassElement, ObjectLiteralElement, JSDocContainer {
|
||||
export interface GetAccessorDeclaration extends FunctionLikeDeclarationBase, ClassElement, TypeElement, ObjectLiteralElement, JSDocContainer {
|
||||
readonly kind: SyntaxKind.GetAccessor;
|
||||
readonly parent: ClassLikeDeclaration | ObjectLiteralExpression;
|
||||
readonly parent: ClassLikeDeclaration | ObjectLiteralExpression | TypeLiteralNode | InterfaceDeclaration;
|
||||
readonly name: PropertyName;
|
||||
readonly body?: FunctionBody;
|
||||
}
|
||||
export interface SetAccessorDeclaration extends FunctionLikeDeclarationBase, ClassElement, ObjectLiteralElement, JSDocContainer {
|
||||
export interface SetAccessorDeclaration extends FunctionLikeDeclarationBase, ClassElement, TypeElement, ObjectLiteralElement, JSDocContainer {
|
||||
readonly kind: SyntaxKind.SetAccessor;
|
||||
readonly parent: ClassLikeDeclaration | ObjectLiteralExpression;
|
||||
readonly parent: ClassLikeDeclaration | ObjectLiteralExpression | TypeLiteralNode | InterfaceDeclaration;
|
||||
readonly name: PropertyName;
|
||||
readonly body?: FunctionBody;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
//// [divergentAccessors1.ts]
|
||||
// Accessors in interfaces/types
|
||||
|
||||
{
|
||||
interface IHasGetSet {
|
||||
get foo(): number;
|
||||
set foo(v: number | string);
|
||||
}
|
||||
|
||||
const ihgs: IHasGetSet = null as any;
|
||||
ihgs.foo = "32";
|
||||
let r_ihgs_foo: number = ihgs.foo;
|
||||
}
|
||||
|
||||
{
|
||||
type T_HasGetSet = {
|
||||
get foo(): number;
|
||||
set foo(v: number | string);
|
||||
}
|
||||
|
||||
const t_hgs: T_HasGetSet = null as any;
|
||||
t_hgs.foo = "32";
|
||||
let r_t_hgs_foo: number = t_hgs.foo;
|
||||
}
|
||||
|
||||
|
||||
//// [divergentAccessors1.js]
|
||||
"use strict";
|
||||
// Accessors in interfaces/types
|
||||
{
|
||||
var ihgs = null;
|
||||
ihgs.foo = "32";
|
||||
var r_ihgs_foo = ihgs.foo;
|
||||
}
|
||||
{
|
||||
var t_hgs = null;
|
||||
t_hgs.foo = "32";
|
||||
var r_t_hgs_foo = t_hgs.foo;
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
=== tests/cases/compiler/divergentAccessors1.ts ===
|
||||
// Accessors in interfaces/types
|
||||
|
||||
{
|
||||
interface IHasGetSet {
|
||||
>IHasGetSet : Symbol(IHasGetSet, Decl(divergentAccessors1.ts, 2, 1))
|
||||
|
||||
get foo(): number;
|
||||
>foo : Symbol(IHasGetSet.foo, Decl(divergentAccessors1.ts, 3, 26), Decl(divergentAccessors1.ts, 4, 26))
|
||||
|
||||
set foo(v: number | string);
|
||||
>foo : Symbol(IHasGetSet.foo, Decl(divergentAccessors1.ts, 3, 26), Decl(divergentAccessors1.ts, 4, 26))
|
||||
>v : Symbol(v, Decl(divergentAccessors1.ts, 5, 16))
|
||||
}
|
||||
|
||||
const ihgs: IHasGetSet = null as any;
|
||||
>ihgs : Symbol(ihgs, Decl(divergentAccessors1.ts, 8, 9))
|
||||
>IHasGetSet : Symbol(IHasGetSet, Decl(divergentAccessors1.ts, 2, 1))
|
||||
|
||||
ihgs.foo = "32";
|
||||
>ihgs.foo : Symbol(IHasGetSet.foo, Decl(divergentAccessors1.ts, 3, 26), Decl(divergentAccessors1.ts, 4, 26))
|
||||
>ihgs : Symbol(ihgs, Decl(divergentAccessors1.ts, 8, 9))
|
||||
>foo : Symbol(IHasGetSet.foo, Decl(divergentAccessors1.ts, 3, 26), Decl(divergentAccessors1.ts, 4, 26))
|
||||
|
||||
let r_ihgs_foo: number = ihgs.foo;
|
||||
>r_ihgs_foo : Symbol(r_ihgs_foo, Decl(divergentAccessors1.ts, 10, 7))
|
||||
>ihgs.foo : Symbol(IHasGetSet.foo, Decl(divergentAccessors1.ts, 3, 26), Decl(divergentAccessors1.ts, 4, 26))
|
||||
>ihgs : Symbol(ihgs, Decl(divergentAccessors1.ts, 8, 9))
|
||||
>foo : Symbol(IHasGetSet.foo, Decl(divergentAccessors1.ts, 3, 26), Decl(divergentAccessors1.ts, 4, 26))
|
||||
}
|
||||
|
||||
{
|
||||
type T_HasGetSet = {
|
||||
>T_HasGetSet : Symbol(T_HasGetSet, Decl(divergentAccessors1.ts, 13, 1))
|
||||
|
||||
get foo(): number;
|
||||
>foo : Symbol(foo, Decl(divergentAccessors1.ts, 14, 24), Decl(divergentAccessors1.ts, 15, 26))
|
||||
|
||||
set foo(v: number | string);
|
||||
>foo : Symbol(foo, Decl(divergentAccessors1.ts, 14, 24), Decl(divergentAccessors1.ts, 15, 26))
|
||||
>v : Symbol(v, Decl(divergentAccessors1.ts, 16, 16))
|
||||
}
|
||||
|
||||
const t_hgs: T_HasGetSet = null as any;
|
||||
>t_hgs : Symbol(t_hgs, Decl(divergentAccessors1.ts, 19, 9))
|
||||
>T_HasGetSet : Symbol(T_HasGetSet, Decl(divergentAccessors1.ts, 13, 1))
|
||||
|
||||
t_hgs.foo = "32";
|
||||
>t_hgs.foo : Symbol(foo, Decl(divergentAccessors1.ts, 14, 24), Decl(divergentAccessors1.ts, 15, 26))
|
||||
>t_hgs : Symbol(t_hgs, Decl(divergentAccessors1.ts, 19, 9))
|
||||
>foo : Symbol(foo, Decl(divergentAccessors1.ts, 14, 24), Decl(divergentAccessors1.ts, 15, 26))
|
||||
|
||||
let r_t_hgs_foo: number = t_hgs.foo;
|
||||
>r_t_hgs_foo : Symbol(r_t_hgs_foo, Decl(divergentAccessors1.ts, 21, 7))
|
||||
>t_hgs.foo : Symbol(foo, Decl(divergentAccessors1.ts, 14, 24), Decl(divergentAccessors1.ts, 15, 26))
|
||||
>t_hgs : Symbol(t_hgs, Decl(divergentAccessors1.ts, 19, 9))
|
||||
>foo : Symbol(foo, Decl(divergentAccessors1.ts, 14, 24), Decl(divergentAccessors1.ts, 15, 26))
|
||||
}
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
=== tests/cases/compiler/divergentAccessors1.ts ===
|
||||
// Accessors in interfaces/types
|
||||
|
||||
{
|
||||
interface IHasGetSet {
|
||||
get foo(): number;
|
||||
>foo : number
|
||||
|
||||
set foo(v: number | string);
|
||||
>foo : number
|
||||
>v : string | number
|
||||
}
|
||||
|
||||
const ihgs: IHasGetSet = null as any;
|
||||
>ihgs : IHasGetSet
|
||||
>null as any : any
|
||||
>null : null
|
||||
|
||||
ihgs.foo = "32";
|
||||
>ihgs.foo = "32" : "32"
|
||||
>ihgs.foo : string | number
|
||||
>ihgs : IHasGetSet
|
||||
>foo : string | number
|
||||
>"32" : "32"
|
||||
|
||||
let r_ihgs_foo: number = ihgs.foo;
|
||||
>r_ihgs_foo : number
|
||||
>ihgs.foo : number
|
||||
>ihgs : IHasGetSet
|
||||
>foo : number
|
||||
}
|
||||
|
||||
{
|
||||
type T_HasGetSet = {
|
||||
>T_HasGetSet : { foo: number; }
|
||||
|
||||
get foo(): number;
|
||||
>foo : number
|
||||
|
||||
set foo(v: number | string);
|
||||
>foo : number
|
||||
>v : string | number
|
||||
}
|
||||
|
||||
const t_hgs: T_HasGetSet = null as any;
|
||||
>t_hgs : { foo: number; }
|
||||
>null as any : any
|
||||
>null : null
|
||||
|
||||
t_hgs.foo = "32";
|
||||
>t_hgs.foo = "32" : "32"
|
||||
>t_hgs.foo : string | number
|
||||
>t_hgs : { foo: number; }
|
||||
>foo : string | number
|
||||
>"32" : "32"
|
||||
|
||||
let r_t_hgs_foo: number = t_hgs.foo;
|
||||
>r_t_hgs_foo : number
|
||||
>t_hgs.foo : number
|
||||
>t_hgs : { foo: number; }
|
||||
>foo : number
|
||||
}
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
//// [divergentAccessorsTypes1.ts]
|
||||
class Test1 {
|
||||
get foo(): string { return "" }
|
||||
set foo(s: string | number) {
|
||||
let a = s as string;
|
||||
let b = s as number;
|
||||
}
|
||||
|
||||
get bar(): string | number { return "" }
|
||||
set bar(s: string | number | boolean) {
|
||||
}
|
||||
}
|
||||
|
||||
interface Test2 {
|
||||
get foo(): string;
|
||||
set foo(s: string | number);
|
||||
|
||||
get bar(): string | number;
|
||||
set bar(s: string | number | boolean);
|
||||
}
|
||||
|
||||
type Test3 = {
|
||||
get foo(): string;
|
||||
set foo(s: string | number);
|
||||
|
||||
get bar(): string | number;
|
||||
set bar(s: string | number | boolean);
|
||||
};
|
||||
|
||||
{
|
||||
const t = new Test1();
|
||||
t.foo = 32;
|
||||
let m: string = t.foo;
|
||||
|
||||
// See how CFA interacts with out-of-type writes
|
||||
t.bar = 42;
|
||||
let n: number = t.bar;
|
||||
t.bar = false;
|
||||
let o = t.bar;
|
||||
}
|
||||
|
||||
{
|
||||
const t = {} as Test2;
|
||||
t.foo = 32;
|
||||
let m: string = t.foo;
|
||||
|
||||
// See how CFA interacts with out-of-type writes
|
||||
t.bar = 42;
|
||||
let n: number = t.bar;
|
||||
t.bar = false;
|
||||
let o = t.bar;
|
||||
}
|
||||
|
||||
{
|
||||
const t = {} as Test3;
|
||||
t.foo = 32;
|
||||
let m: string = t.foo;
|
||||
|
||||
// See how CFA interacts with out-of-type writes
|
||||
t.bar = 42;
|
||||
let n: number = t.bar;
|
||||
t.bar = false;
|
||||
let o = t.bar;
|
||||
}
|
||||
|
||||
//// [divergentAccessorsTypes1.js]
|
||||
"use strict";
|
||||
class Test1 {
|
||||
get foo() { return ""; }
|
||||
set foo(s) {
|
||||
let a = s;
|
||||
let b = s;
|
||||
}
|
||||
get bar() { return ""; }
|
||||
set bar(s) {
|
||||
}
|
||||
}
|
||||
{
|
||||
const t = new Test1();
|
||||
t.foo = 32;
|
||||
let m = t.foo;
|
||||
// See how CFA interacts with out-of-type writes
|
||||
t.bar = 42;
|
||||
let n = t.bar;
|
||||
t.bar = false;
|
||||
let o = t.bar;
|
||||
}
|
||||
{
|
||||
const t = {};
|
||||
t.foo = 32;
|
||||
let m = t.foo;
|
||||
// See how CFA interacts with out-of-type writes
|
||||
t.bar = 42;
|
||||
let n = t.bar;
|
||||
t.bar = false;
|
||||
let o = t.bar;
|
||||
}
|
||||
{
|
||||
const t = {};
|
||||
t.foo = 32;
|
||||
let m = t.foo;
|
||||
// See how CFA interacts with out-of-type writes
|
||||
t.bar = 42;
|
||||
let n = t.bar;
|
||||
t.bar = false;
|
||||
let o = t.bar;
|
||||
}
|
||||
@@ -0,0 +1,185 @@
|
||||
=== tests/cases/compiler/divergentAccessorsTypes1.ts ===
|
||||
class Test1 {
|
||||
>Test1 : Symbol(Test1, Decl(divergentAccessorsTypes1.ts, 0, 0))
|
||||
|
||||
get foo(): string { return "" }
|
||||
>foo : Symbol(Test1.foo, Decl(divergentAccessorsTypes1.ts, 0, 13), Decl(divergentAccessorsTypes1.ts, 1, 35))
|
||||
|
||||
set foo(s: string | number) {
|
||||
>foo : Symbol(Test1.foo, Decl(divergentAccessorsTypes1.ts, 0, 13), Decl(divergentAccessorsTypes1.ts, 1, 35))
|
||||
>s : Symbol(s, Decl(divergentAccessorsTypes1.ts, 2, 12))
|
||||
|
||||
let a = s as string;
|
||||
>a : Symbol(a, Decl(divergentAccessorsTypes1.ts, 3, 11))
|
||||
>s : Symbol(s, Decl(divergentAccessorsTypes1.ts, 2, 12))
|
||||
|
||||
let b = s as number;
|
||||
>b : Symbol(b, Decl(divergentAccessorsTypes1.ts, 4, 11))
|
||||
>s : Symbol(s, Decl(divergentAccessorsTypes1.ts, 2, 12))
|
||||
}
|
||||
|
||||
get bar(): string | number { return "" }
|
||||
>bar : Symbol(Test1.bar, Decl(divergentAccessorsTypes1.ts, 5, 5), Decl(divergentAccessorsTypes1.ts, 7, 44))
|
||||
|
||||
set bar(s: string | number | boolean) {
|
||||
>bar : Symbol(Test1.bar, Decl(divergentAccessorsTypes1.ts, 5, 5), Decl(divergentAccessorsTypes1.ts, 7, 44))
|
||||
>s : Symbol(s, Decl(divergentAccessorsTypes1.ts, 8, 12))
|
||||
}
|
||||
}
|
||||
|
||||
interface Test2 {
|
||||
>Test2 : Symbol(Test2, Decl(divergentAccessorsTypes1.ts, 10, 1))
|
||||
|
||||
get foo(): string;
|
||||
>foo : Symbol(Test2.foo, Decl(divergentAccessorsTypes1.ts, 12, 17), Decl(divergentAccessorsTypes1.ts, 13, 22))
|
||||
|
||||
set foo(s: string | number);
|
||||
>foo : Symbol(Test2.foo, Decl(divergentAccessorsTypes1.ts, 12, 17), Decl(divergentAccessorsTypes1.ts, 13, 22))
|
||||
>s : Symbol(s, Decl(divergentAccessorsTypes1.ts, 14, 12))
|
||||
|
||||
get bar(): string | number;
|
||||
>bar : Symbol(Test2.bar, Decl(divergentAccessorsTypes1.ts, 14, 32), Decl(divergentAccessorsTypes1.ts, 16, 31))
|
||||
|
||||
set bar(s: string | number | boolean);
|
||||
>bar : Symbol(Test2.bar, Decl(divergentAccessorsTypes1.ts, 14, 32), Decl(divergentAccessorsTypes1.ts, 16, 31))
|
||||
>s : Symbol(s, Decl(divergentAccessorsTypes1.ts, 17, 12))
|
||||
}
|
||||
|
||||
type Test3 = {
|
||||
>Test3 : Symbol(Test3, Decl(divergentAccessorsTypes1.ts, 18, 1))
|
||||
|
||||
get foo(): string;
|
||||
>foo : Symbol(foo, Decl(divergentAccessorsTypes1.ts, 20, 14), Decl(divergentAccessorsTypes1.ts, 21, 22))
|
||||
|
||||
set foo(s: string | number);
|
||||
>foo : Symbol(foo, Decl(divergentAccessorsTypes1.ts, 20, 14), Decl(divergentAccessorsTypes1.ts, 21, 22))
|
||||
>s : Symbol(s, Decl(divergentAccessorsTypes1.ts, 22, 12))
|
||||
|
||||
get bar(): string | number;
|
||||
>bar : Symbol(bar, Decl(divergentAccessorsTypes1.ts, 22, 32), Decl(divergentAccessorsTypes1.ts, 24, 31))
|
||||
|
||||
set bar(s: string | number | boolean);
|
||||
>bar : Symbol(bar, Decl(divergentAccessorsTypes1.ts, 22, 32), Decl(divergentAccessorsTypes1.ts, 24, 31))
|
||||
>s : Symbol(s, Decl(divergentAccessorsTypes1.ts, 25, 12))
|
||||
|
||||
};
|
||||
|
||||
{
|
||||
const t = new Test1();
|
||||
>t : Symbol(t, Decl(divergentAccessorsTypes1.ts, 29, 9))
|
||||
>Test1 : Symbol(Test1, Decl(divergentAccessorsTypes1.ts, 0, 0))
|
||||
|
||||
t.foo = 32;
|
||||
>t.foo : Symbol(Test1.foo, Decl(divergentAccessorsTypes1.ts, 0, 13), Decl(divergentAccessorsTypes1.ts, 1, 35))
|
||||
>t : Symbol(t, Decl(divergentAccessorsTypes1.ts, 29, 9))
|
||||
>foo : Symbol(Test1.foo, Decl(divergentAccessorsTypes1.ts, 0, 13), Decl(divergentAccessorsTypes1.ts, 1, 35))
|
||||
|
||||
let m: string = t.foo;
|
||||
>m : Symbol(m, Decl(divergentAccessorsTypes1.ts, 31, 7))
|
||||
>t.foo : Symbol(Test1.foo, Decl(divergentAccessorsTypes1.ts, 0, 13), Decl(divergentAccessorsTypes1.ts, 1, 35))
|
||||
>t : Symbol(t, Decl(divergentAccessorsTypes1.ts, 29, 9))
|
||||
>foo : Symbol(Test1.foo, Decl(divergentAccessorsTypes1.ts, 0, 13), Decl(divergentAccessorsTypes1.ts, 1, 35))
|
||||
|
||||
// See how CFA interacts with out-of-type writes
|
||||
t.bar = 42;
|
||||
>t.bar : Symbol(Test1.bar, Decl(divergentAccessorsTypes1.ts, 5, 5), Decl(divergentAccessorsTypes1.ts, 7, 44))
|
||||
>t : Symbol(t, Decl(divergentAccessorsTypes1.ts, 29, 9))
|
||||
>bar : Symbol(Test1.bar, Decl(divergentAccessorsTypes1.ts, 5, 5), Decl(divergentAccessorsTypes1.ts, 7, 44))
|
||||
|
||||
let n: number = t.bar;
|
||||
>n : Symbol(n, Decl(divergentAccessorsTypes1.ts, 35, 7))
|
||||
>t.bar : Symbol(Test1.bar, Decl(divergentAccessorsTypes1.ts, 5, 5), Decl(divergentAccessorsTypes1.ts, 7, 44))
|
||||
>t : Symbol(t, Decl(divergentAccessorsTypes1.ts, 29, 9))
|
||||
>bar : Symbol(Test1.bar, Decl(divergentAccessorsTypes1.ts, 5, 5), Decl(divergentAccessorsTypes1.ts, 7, 44))
|
||||
|
||||
t.bar = false;
|
||||
>t.bar : Symbol(Test1.bar, Decl(divergentAccessorsTypes1.ts, 5, 5), Decl(divergentAccessorsTypes1.ts, 7, 44))
|
||||
>t : Symbol(t, Decl(divergentAccessorsTypes1.ts, 29, 9))
|
||||
>bar : Symbol(Test1.bar, Decl(divergentAccessorsTypes1.ts, 5, 5), Decl(divergentAccessorsTypes1.ts, 7, 44))
|
||||
|
||||
let o = t.bar;
|
||||
>o : Symbol(o, Decl(divergentAccessorsTypes1.ts, 37, 7))
|
||||
>t.bar : Symbol(Test1.bar, Decl(divergentAccessorsTypes1.ts, 5, 5), Decl(divergentAccessorsTypes1.ts, 7, 44))
|
||||
>t : Symbol(t, Decl(divergentAccessorsTypes1.ts, 29, 9))
|
||||
>bar : Symbol(Test1.bar, Decl(divergentAccessorsTypes1.ts, 5, 5), Decl(divergentAccessorsTypes1.ts, 7, 44))
|
||||
}
|
||||
|
||||
{
|
||||
const t = {} as Test2;
|
||||
>t : Symbol(t, Decl(divergentAccessorsTypes1.ts, 41, 9))
|
||||
>Test2 : Symbol(Test2, Decl(divergentAccessorsTypes1.ts, 10, 1))
|
||||
|
||||
t.foo = 32;
|
||||
>t.foo : Symbol(Test2.foo, Decl(divergentAccessorsTypes1.ts, 12, 17), Decl(divergentAccessorsTypes1.ts, 13, 22))
|
||||
>t : Symbol(t, Decl(divergentAccessorsTypes1.ts, 41, 9))
|
||||
>foo : Symbol(Test2.foo, Decl(divergentAccessorsTypes1.ts, 12, 17), Decl(divergentAccessorsTypes1.ts, 13, 22))
|
||||
|
||||
let m: string = t.foo;
|
||||
>m : Symbol(m, Decl(divergentAccessorsTypes1.ts, 43, 7))
|
||||
>t.foo : Symbol(Test2.foo, Decl(divergentAccessorsTypes1.ts, 12, 17), Decl(divergentAccessorsTypes1.ts, 13, 22))
|
||||
>t : Symbol(t, Decl(divergentAccessorsTypes1.ts, 41, 9))
|
||||
>foo : Symbol(Test2.foo, Decl(divergentAccessorsTypes1.ts, 12, 17), Decl(divergentAccessorsTypes1.ts, 13, 22))
|
||||
|
||||
// See how CFA interacts with out-of-type writes
|
||||
t.bar = 42;
|
||||
>t.bar : Symbol(Test2.bar, Decl(divergentAccessorsTypes1.ts, 14, 32), Decl(divergentAccessorsTypes1.ts, 16, 31))
|
||||
>t : Symbol(t, Decl(divergentAccessorsTypes1.ts, 41, 9))
|
||||
>bar : Symbol(Test2.bar, Decl(divergentAccessorsTypes1.ts, 14, 32), Decl(divergentAccessorsTypes1.ts, 16, 31))
|
||||
|
||||
let n: number = t.bar;
|
||||
>n : Symbol(n, Decl(divergentAccessorsTypes1.ts, 47, 7))
|
||||
>t.bar : Symbol(Test2.bar, Decl(divergentAccessorsTypes1.ts, 14, 32), Decl(divergentAccessorsTypes1.ts, 16, 31))
|
||||
>t : Symbol(t, Decl(divergentAccessorsTypes1.ts, 41, 9))
|
||||
>bar : Symbol(Test2.bar, Decl(divergentAccessorsTypes1.ts, 14, 32), Decl(divergentAccessorsTypes1.ts, 16, 31))
|
||||
|
||||
t.bar = false;
|
||||
>t.bar : Symbol(Test2.bar, Decl(divergentAccessorsTypes1.ts, 14, 32), Decl(divergentAccessorsTypes1.ts, 16, 31))
|
||||
>t : Symbol(t, Decl(divergentAccessorsTypes1.ts, 41, 9))
|
||||
>bar : Symbol(Test2.bar, Decl(divergentAccessorsTypes1.ts, 14, 32), Decl(divergentAccessorsTypes1.ts, 16, 31))
|
||||
|
||||
let o = t.bar;
|
||||
>o : Symbol(o, Decl(divergentAccessorsTypes1.ts, 49, 7))
|
||||
>t.bar : Symbol(Test2.bar, Decl(divergentAccessorsTypes1.ts, 14, 32), Decl(divergentAccessorsTypes1.ts, 16, 31))
|
||||
>t : Symbol(t, Decl(divergentAccessorsTypes1.ts, 41, 9))
|
||||
>bar : Symbol(Test2.bar, Decl(divergentAccessorsTypes1.ts, 14, 32), Decl(divergentAccessorsTypes1.ts, 16, 31))
|
||||
}
|
||||
|
||||
{
|
||||
const t = {} as Test3;
|
||||
>t : Symbol(t, Decl(divergentAccessorsTypes1.ts, 53, 9))
|
||||
>Test3 : Symbol(Test3, Decl(divergentAccessorsTypes1.ts, 18, 1))
|
||||
|
||||
t.foo = 32;
|
||||
>t.foo : Symbol(foo, Decl(divergentAccessorsTypes1.ts, 20, 14), Decl(divergentAccessorsTypes1.ts, 21, 22))
|
||||
>t : Symbol(t, Decl(divergentAccessorsTypes1.ts, 53, 9))
|
||||
>foo : Symbol(foo, Decl(divergentAccessorsTypes1.ts, 20, 14), Decl(divergentAccessorsTypes1.ts, 21, 22))
|
||||
|
||||
let m: string = t.foo;
|
||||
>m : Symbol(m, Decl(divergentAccessorsTypes1.ts, 55, 7))
|
||||
>t.foo : Symbol(foo, Decl(divergentAccessorsTypes1.ts, 20, 14), Decl(divergentAccessorsTypes1.ts, 21, 22))
|
||||
>t : Symbol(t, Decl(divergentAccessorsTypes1.ts, 53, 9))
|
||||
>foo : Symbol(foo, Decl(divergentAccessorsTypes1.ts, 20, 14), Decl(divergentAccessorsTypes1.ts, 21, 22))
|
||||
|
||||
// See how CFA interacts with out-of-type writes
|
||||
t.bar = 42;
|
||||
>t.bar : Symbol(bar, Decl(divergentAccessorsTypes1.ts, 22, 32), Decl(divergentAccessorsTypes1.ts, 24, 31))
|
||||
>t : Symbol(t, Decl(divergentAccessorsTypes1.ts, 53, 9))
|
||||
>bar : Symbol(bar, Decl(divergentAccessorsTypes1.ts, 22, 32), Decl(divergentAccessorsTypes1.ts, 24, 31))
|
||||
|
||||
let n: number = t.bar;
|
||||
>n : Symbol(n, Decl(divergentAccessorsTypes1.ts, 59, 7))
|
||||
>t.bar : Symbol(bar, Decl(divergentAccessorsTypes1.ts, 22, 32), Decl(divergentAccessorsTypes1.ts, 24, 31))
|
||||
>t : Symbol(t, Decl(divergentAccessorsTypes1.ts, 53, 9))
|
||||
>bar : Symbol(bar, Decl(divergentAccessorsTypes1.ts, 22, 32), Decl(divergentAccessorsTypes1.ts, 24, 31))
|
||||
|
||||
t.bar = false;
|
||||
>t.bar : Symbol(bar, Decl(divergentAccessorsTypes1.ts, 22, 32), Decl(divergentAccessorsTypes1.ts, 24, 31))
|
||||
>t : Symbol(t, Decl(divergentAccessorsTypes1.ts, 53, 9))
|
||||
>bar : Symbol(bar, Decl(divergentAccessorsTypes1.ts, 22, 32), Decl(divergentAccessorsTypes1.ts, 24, 31))
|
||||
|
||||
let o = t.bar;
|
||||
>o : Symbol(o, Decl(divergentAccessorsTypes1.ts, 61, 7))
|
||||
>t.bar : Symbol(bar, Decl(divergentAccessorsTypes1.ts, 22, 32), Decl(divergentAccessorsTypes1.ts, 24, 31))
|
||||
>t : Symbol(t, Decl(divergentAccessorsTypes1.ts, 53, 9))
|
||||
>bar : Symbol(bar, Decl(divergentAccessorsTypes1.ts, 22, 32), Decl(divergentAccessorsTypes1.ts, 24, 31))
|
||||
}
|
||||
@@ -0,0 +1,208 @@
|
||||
=== tests/cases/compiler/divergentAccessorsTypes1.ts ===
|
||||
class Test1 {
|
||||
>Test1 : Test1
|
||||
|
||||
get foo(): string { return "" }
|
||||
>foo : string
|
||||
>"" : ""
|
||||
|
||||
set foo(s: string | number) {
|
||||
>foo : string
|
||||
>s : string | number
|
||||
|
||||
let a = s as string;
|
||||
>a : string
|
||||
>s as string : string
|
||||
>s : string | number
|
||||
|
||||
let b = s as number;
|
||||
>b : number
|
||||
>s as number : number
|
||||
>s : string | number
|
||||
}
|
||||
|
||||
get bar(): string | number { return "" }
|
||||
>bar : string | number
|
||||
>"" : ""
|
||||
|
||||
set bar(s: string | number | boolean) {
|
||||
>bar : string | number
|
||||
>s : string | number | boolean
|
||||
}
|
||||
}
|
||||
|
||||
interface Test2 {
|
||||
get foo(): string;
|
||||
>foo : string
|
||||
|
||||
set foo(s: string | number);
|
||||
>foo : string
|
||||
>s : string | number
|
||||
|
||||
get bar(): string | number;
|
||||
>bar : string | number
|
||||
|
||||
set bar(s: string | number | boolean);
|
||||
>bar : string | number
|
||||
>s : string | number | boolean
|
||||
}
|
||||
|
||||
type Test3 = {
|
||||
>Test3 : Test3
|
||||
|
||||
get foo(): string;
|
||||
>foo : string
|
||||
|
||||
set foo(s: string | number);
|
||||
>foo : string
|
||||
>s : string | number
|
||||
|
||||
get bar(): string | number;
|
||||
>bar : string | number
|
||||
|
||||
set bar(s: string | number | boolean);
|
||||
>bar : string | number
|
||||
>s : string | number | boolean
|
||||
|
||||
};
|
||||
|
||||
{
|
||||
const t = new Test1();
|
||||
>t : Test1
|
||||
>new Test1() : Test1
|
||||
>Test1 : typeof Test1
|
||||
|
||||
t.foo = 32;
|
||||
>t.foo = 32 : 32
|
||||
>t.foo : string | number
|
||||
>t : Test1
|
||||
>foo : string | number
|
||||
>32 : 32
|
||||
|
||||
let m: string = t.foo;
|
||||
>m : string
|
||||
>t.foo : string
|
||||
>t : Test1
|
||||
>foo : string
|
||||
|
||||
// See how CFA interacts with out-of-type writes
|
||||
t.bar = 42;
|
||||
>t.bar = 42 : 42
|
||||
>t.bar : string | number | boolean
|
||||
>t : Test1
|
||||
>bar : string | number | boolean
|
||||
>42 : 42
|
||||
|
||||
let n: number = t.bar;
|
||||
>n : number
|
||||
>t.bar : number
|
||||
>t : Test1
|
||||
>bar : number
|
||||
|
||||
t.bar = false;
|
||||
>t.bar = false : false
|
||||
>t.bar : string | number | boolean
|
||||
>t : Test1
|
||||
>bar : string | number | boolean
|
||||
>false : false
|
||||
|
||||
let o = t.bar;
|
||||
>o : string | number
|
||||
>t.bar : string | number
|
||||
>t : Test1
|
||||
>bar : string | number
|
||||
}
|
||||
|
||||
{
|
||||
const t = {} as Test2;
|
||||
>t : Test2
|
||||
>{} as Test2 : Test2
|
||||
>{} : {}
|
||||
|
||||
t.foo = 32;
|
||||
>t.foo = 32 : 32
|
||||
>t.foo : string | number
|
||||
>t : Test2
|
||||
>foo : string | number
|
||||
>32 : 32
|
||||
|
||||
let m: string = t.foo;
|
||||
>m : string
|
||||
>t.foo : string
|
||||
>t : Test2
|
||||
>foo : string
|
||||
|
||||
// See how CFA interacts with out-of-type writes
|
||||
t.bar = 42;
|
||||
>t.bar = 42 : 42
|
||||
>t.bar : string | number | boolean
|
||||
>t : Test2
|
||||
>bar : string | number | boolean
|
||||
>42 : 42
|
||||
|
||||
let n: number = t.bar;
|
||||
>n : number
|
||||
>t.bar : number
|
||||
>t : Test2
|
||||
>bar : number
|
||||
|
||||
t.bar = false;
|
||||
>t.bar = false : false
|
||||
>t.bar : string | number | boolean
|
||||
>t : Test2
|
||||
>bar : string | number | boolean
|
||||
>false : false
|
||||
|
||||
let o = t.bar;
|
||||
>o : string | number
|
||||
>t.bar : string | number
|
||||
>t : Test2
|
||||
>bar : string | number
|
||||
}
|
||||
|
||||
{
|
||||
const t = {} as Test3;
|
||||
>t : Test3
|
||||
>{} as Test3 : Test3
|
||||
>{} : {}
|
||||
|
||||
t.foo = 32;
|
||||
>t.foo = 32 : 32
|
||||
>t.foo : string | number
|
||||
>t : Test3
|
||||
>foo : string | number
|
||||
>32 : 32
|
||||
|
||||
let m: string = t.foo;
|
||||
>m : string
|
||||
>t.foo : string
|
||||
>t : Test3
|
||||
>foo : string
|
||||
|
||||
// See how CFA interacts with out-of-type writes
|
||||
t.bar = 42;
|
||||
>t.bar = 42 : 42
|
||||
>t.bar : string | number | boolean
|
||||
>t : Test3
|
||||
>bar : string | number | boolean
|
||||
>42 : 42
|
||||
|
||||
let n: number = t.bar;
|
||||
>n : number
|
||||
>t.bar : number
|
||||
>t : Test3
|
||||
>bar : number
|
||||
|
||||
t.bar = false;
|
||||
>t.bar = false : false
|
||||
>t.bar : string | number | boolean
|
||||
>t : Test3
|
||||
>bar : string | number | boolean
|
||||
>false : false
|
||||
|
||||
let o = t.bar;
|
||||
>o : string | number
|
||||
>t.bar : string | number
|
||||
>t : Test3
|
||||
>bar : string | number
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
tests/cases/compiler/divergentAccessorsTypes2.ts(10,1): error TS2322: Type '42' is not assignable to type 'string | undefined'.
|
||||
|
||||
|
||||
==== tests/cases/compiler/divergentAccessorsTypes2.ts (1 errors) ====
|
||||
class Test1<T> {
|
||||
get foo(): T { return null as any }
|
||||
set foo(s: T | undefined ) {
|
||||
}
|
||||
}
|
||||
|
||||
const s = new Test1<string>();
|
||||
s.foo = undefined;
|
||||
s.foo = "hello";
|
||||
s.foo = 42;
|
||||
~~~~~
|
||||
!!! error TS2322: Type '42' is not assignable to type 'string | undefined'.
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
//// [divergentAccessorsTypes2.ts]
|
||||
class Test1<T> {
|
||||
get foo(): T { return null as any }
|
||||
set foo(s: T | undefined ) {
|
||||
}
|
||||
}
|
||||
|
||||
const s = new Test1<string>();
|
||||
s.foo = undefined;
|
||||
s.foo = "hello";
|
||||
s.foo = 42;
|
||||
|
||||
|
||||
//// [divergentAccessorsTypes2.js]
|
||||
"use strict";
|
||||
class Test1 {
|
||||
get foo() { return null; }
|
||||
set foo(s) {
|
||||
}
|
||||
}
|
||||
const s = new Test1();
|
||||
s.foo = undefined;
|
||||
s.foo = "hello";
|
||||
s.foo = 42;
|
||||
@@ -0,0 +1,36 @@
|
||||
=== tests/cases/compiler/divergentAccessorsTypes2.ts ===
|
||||
class Test1<T> {
|
||||
>Test1 : Symbol(Test1, Decl(divergentAccessorsTypes2.ts, 0, 0))
|
||||
>T : Symbol(T, Decl(divergentAccessorsTypes2.ts, 0, 12))
|
||||
|
||||
get foo(): T { return null as any }
|
||||
>foo : Symbol(Test1.foo, Decl(divergentAccessorsTypes2.ts, 0, 16), Decl(divergentAccessorsTypes2.ts, 1, 39))
|
||||
>T : Symbol(T, Decl(divergentAccessorsTypes2.ts, 0, 12))
|
||||
|
||||
set foo(s: T | undefined ) {
|
||||
>foo : Symbol(Test1.foo, Decl(divergentAccessorsTypes2.ts, 0, 16), Decl(divergentAccessorsTypes2.ts, 1, 39))
|
||||
>s : Symbol(s, Decl(divergentAccessorsTypes2.ts, 2, 12))
|
||||
>T : Symbol(T, Decl(divergentAccessorsTypes2.ts, 0, 12))
|
||||
}
|
||||
}
|
||||
|
||||
const s = new Test1<string>();
|
||||
>s : Symbol(s, Decl(divergentAccessorsTypes2.ts, 6, 5))
|
||||
>Test1 : Symbol(Test1, Decl(divergentAccessorsTypes2.ts, 0, 0))
|
||||
|
||||
s.foo = undefined;
|
||||
>s.foo : Symbol(Test1.foo, Decl(divergentAccessorsTypes2.ts, 0, 16), Decl(divergentAccessorsTypes2.ts, 1, 39))
|
||||
>s : Symbol(s, Decl(divergentAccessorsTypes2.ts, 6, 5))
|
||||
>foo : Symbol(Test1.foo, Decl(divergentAccessorsTypes2.ts, 0, 16), Decl(divergentAccessorsTypes2.ts, 1, 39))
|
||||
>undefined : Symbol(undefined)
|
||||
|
||||
s.foo = "hello";
|
||||
>s.foo : Symbol(Test1.foo, Decl(divergentAccessorsTypes2.ts, 0, 16), Decl(divergentAccessorsTypes2.ts, 1, 39))
|
||||
>s : Symbol(s, Decl(divergentAccessorsTypes2.ts, 6, 5))
|
||||
>foo : Symbol(Test1.foo, Decl(divergentAccessorsTypes2.ts, 0, 16), Decl(divergentAccessorsTypes2.ts, 1, 39))
|
||||
|
||||
s.foo = 42;
|
||||
>s.foo : Symbol(Test1.foo, Decl(divergentAccessorsTypes2.ts, 0, 16), Decl(divergentAccessorsTypes2.ts, 1, 39))
|
||||
>s : Symbol(s, Decl(divergentAccessorsTypes2.ts, 6, 5))
|
||||
>foo : Symbol(Test1.foo, Decl(divergentAccessorsTypes2.ts, 0, 16), Decl(divergentAccessorsTypes2.ts, 1, 39))
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
=== tests/cases/compiler/divergentAccessorsTypes2.ts ===
|
||||
class Test1<T> {
|
||||
>Test1 : Test1<T>
|
||||
|
||||
get foo(): T { return null as any }
|
||||
>foo : T
|
||||
>null as any : any
|
||||
>null : null
|
||||
|
||||
set foo(s: T | undefined ) {
|
||||
>foo : T
|
||||
>s : T | undefined
|
||||
}
|
||||
}
|
||||
|
||||
const s = new Test1<string>();
|
||||
>s : Test1<string>
|
||||
>new Test1<string>() : Test1<string>
|
||||
>Test1 : typeof Test1
|
||||
|
||||
s.foo = undefined;
|
||||
>s.foo = undefined : undefined
|
||||
>s.foo : string | undefined
|
||||
>s : Test1<string>
|
||||
>foo : string | undefined
|
||||
>undefined : undefined
|
||||
|
||||
s.foo = "hello";
|
||||
>s.foo = "hello" : "hello"
|
||||
>s.foo : string | undefined
|
||||
>s : Test1<string>
|
||||
>foo : string | undefined
|
||||
>"hello" : "hello"
|
||||
|
||||
s.foo = 42;
|
||||
>s.foo = 42 : 42
|
||||
>s.foo : string | undefined
|
||||
>s : Test1<string>
|
||||
>foo : string | undefined
|
||||
>42 : 42
|
||||
|
||||
@@ -0,0 +1,314 @@
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(11,19): error TS2808: A get accessor must be at least as accessible as the setter
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(12,9): error TS2808: A get accessor must be at least as accessible as the setter
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(20,17): error TS2808: A get accessor must be at least as accessible as the setter
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(21,9): error TS2808: A get accessor must be at least as accessible as the setter
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(23,17): error TS2808: A get accessor must be at least as accessible as the setter
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(24,19): error TS2808: A get accessor must be at least as accessible as the setter
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(66,14): error TS2341: Property 'PublicPrivate' is private and only accessible within class 'Base'.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(69,14): error TS2341: Property 'ProtectedPrivate' is private and only accessible within class 'Base'.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(72,14): error TS2341: Property 'PrivatePrivate' is private and only accessible within class 'Base'.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(80,19): error TS2341: Property 'PrivatePublic' is private and only accessible within class 'Base'.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(81,19): error TS2341: Property 'PrivateProtected' is private and only accessible within class 'Base'.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(82,19): error TS2341: Property 'PrivatePrivate' is private and only accessible within class 'Base'.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(86,14): error TS2341: Property 'PublicPrivate' is private and only accessible within class 'Base'.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(89,14): error TS2341: Property 'ProtectedPrivate' is private and only accessible within class 'Base'.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(92,14): error TS2341: Property 'PrivatePrivate' is private and only accessible within class 'Base'.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(99,10): error TS2445: Property 'PublicProtected' is protected and only accessible within class 'Base' and its subclasses.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(100,10): error TS2341: Property 'PublicPrivate' is private and only accessible within class 'Base'.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(102,10): error TS2445: Property 'ProtectedProtected' is protected and only accessible within class 'Base' and its subclasses.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(103,10): error TS2341: Property 'ProtectedPrivate' is private and only accessible within class 'Base'.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(105,10): error TS2445: Property 'PrivateProtected' is protected and only accessible within class 'Base' and its subclasses.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(106,10): error TS2341: Property 'PrivatePrivate' is private and only accessible within class 'Base'.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(111,15): error TS2445: Property 'ProtectedPublic' is protected and only accessible within class 'Base' and its subclasses.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(112,15): error TS2445: Property 'ProtectedProtected' is protected and only accessible within class 'Base' and its subclasses.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(113,15): error TS2445: Property 'ProtectedPrivate' is protected and only accessible within class 'Base' and its subclasses.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(114,15): error TS2341: Property 'PrivatePublic' is private and only accessible within class 'Base'.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(115,15): error TS2341: Property 'PrivateProtected' is private and only accessible within class 'Base'.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(116,15): error TS2341: Property 'PrivatePrivate' is private and only accessible within class 'Base'.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(119,10): error TS2445: Property 'PublicProtected' is protected and only accessible within class 'Base' and its subclasses.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(120,10): error TS2341: Property 'PublicPrivate' is private and only accessible within class 'Base'.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(122,10): error TS2445: Property 'ProtectedProtected' is protected and only accessible within class 'Base' and its subclasses.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(123,10): error TS2341: Property 'ProtectedPrivate' is private and only accessible within class 'Base'.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(125,10): error TS2445: Property 'PrivateProtected' is protected and only accessible within class 'Base' and its subclasses.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(126,10): error TS2341: Property 'PrivatePrivate' is private and only accessible within class 'Base'.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(129,11): error TS2445: Property 'PublicProtected' is protected and only accessible within class 'Base' and its subclasses.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(130,11): error TS2341: Property 'PublicPrivate' is private and only accessible within class 'Base'.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(132,11): error TS2445: Property 'ProtectedProtected' is protected and only accessible within class 'Base' and its subclasses.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(133,11): error TS2341: Property 'ProtectedPrivate' is private and only accessible within class 'Base'.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(135,11): error TS2445: Property 'PrivateProtected' is protected and only accessible within class 'Base' and its subclasses.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(136,11): error TS2341: Property 'PrivatePrivate' is private and only accessible within class 'Base'.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(141,16): error TS2445: Property 'ProtectedPublic' is protected and only accessible within class 'Base' and its subclasses.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(142,16): error TS2445: Property 'ProtectedProtected' is protected and only accessible within class 'Base' and its subclasses.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(143,16): error TS2445: Property 'ProtectedPrivate' is protected and only accessible within class 'Base' and its subclasses.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(144,16): error TS2341: Property 'PrivatePublic' is private and only accessible within class 'Base'.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(145,16): error TS2341: Property 'PrivateProtected' is private and only accessible within class 'Base'.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(146,16): error TS2341: Property 'PrivatePrivate' is private and only accessible within class 'Base'.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(149,11): error TS2445: Property 'PublicProtected' is protected and only accessible within class 'Base' and its subclasses.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(150,11): error TS2341: Property 'PublicPrivate' is private and only accessible within class 'Base'.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(152,11): error TS2445: Property 'ProtectedProtected' is protected and only accessible within class 'Base' and its subclasses.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(153,11): error TS2341: Property 'ProtectedPrivate' is private and only accessible within class 'Base'.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(155,11): error TS2445: Property 'PrivateProtected' is protected and only accessible within class 'Base' and its subclasses.
|
||||
tests/cases/compiler/divergentAccessorsVisibility1.ts(156,11): error TS2341: Property 'PrivatePrivate' is private and only accessible within class 'Base'.
|
||||
|
||||
|
||||
==== tests/cases/compiler/divergentAccessorsVisibility1.ts (51 errors) ====
|
||||
class Base {
|
||||
get PublicPublic() { return 0; }
|
||||
set PublicPublic(v) { return; }
|
||||
|
||||
get PublicProtected() { return 0; }
|
||||
protected set PublicProtected(v) { return; }
|
||||
|
||||
get PublicPrivate() { return 0; }
|
||||
private set PublicPrivate(v) { return; }
|
||||
|
||||
protected get ProtectedPublic() { return 0; }
|
||||
~~~~~~~~~~~~~~~
|
||||
!!! error TS2808: A get accessor must be at least as accessible as the setter
|
||||
set ProtectedPublic(v) { return; }
|
||||
~~~~~~~~~~~~~~~
|
||||
!!! error TS2808: A get accessor must be at least as accessible as the setter
|
||||
|
||||
protected get ProtectedProtected() { return 0; }
|
||||
protected set ProtectedProtected(v) { return; }
|
||||
|
||||
protected get ProtectedPrivate() { return 0; }
|
||||
private set ProtectedPrivate(v) { return; }
|
||||
|
||||
private get PrivatePublic() { return 0; }
|
||||
~~~~~~~~~~~~~
|
||||
!!! error TS2808: A get accessor must be at least as accessible as the setter
|
||||
set PrivatePublic(v) { return; }
|
||||
~~~~~~~~~~~~~
|
||||
!!! error TS2808: A get accessor must be at least as accessible as the setter
|
||||
|
||||
private get PrivateProtected() { return 0; }
|
||||
~~~~~~~~~~~~~~~~
|
||||
!!! error TS2808: A get accessor must be at least as accessible as the setter
|
||||
protected set PrivateProtected(v) { return; }
|
||||
~~~~~~~~~~~~~~~~
|
||||
!!! error TS2808: A get accessor must be at least as accessible as the setter
|
||||
|
||||
private get PrivatePrivate() { return 0; }
|
||||
private set PrivatePrivate(v) { return; }
|
||||
|
||||
test() {
|
||||
this.PublicPublic = 0;
|
||||
this.PublicProtected = 0;
|
||||
this.PublicPrivate = 0;
|
||||
this.ProtectedPublic = 0;
|
||||
this.ProtectedProtected = 0;
|
||||
this.ProtectedPrivate = 0;
|
||||
this.PrivatePublic = 0;
|
||||
this.PrivateProtected = 0;
|
||||
this.PrivatePrivate = 0;
|
||||
|
||||
void this.PublicPublic;
|
||||
void this.PublicProtected;
|
||||
void this.PublicPrivate;
|
||||
void this.ProtectedPublic;
|
||||
void this.ProtectedProtected;
|
||||
void this.ProtectedPrivate;
|
||||
void this.PrivatePublic;
|
||||
void this.PrivateProtected;
|
||||
void this.PrivatePrivate;
|
||||
|
||||
this.PublicPublic += 0;
|
||||
this.PublicProtected += 0;
|
||||
this.PublicPrivate += 0;
|
||||
this.ProtectedPublic += 0;
|
||||
this.ProtectedProtected += 0;
|
||||
this.ProtectedPrivate += 0;
|
||||
this.PrivatePublic += 0;
|
||||
this.PrivateProtected += 0;
|
||||
this.PrivatePrivate += 0;
|
||||
}
|
||||
}
|
||||
|
||||
class Derived extends Base {
|
||||
test2() {
|
||||
this.PublicPublic = 0;
|
||||
this.PublicProtected = 0;
|
||||
this.PublicPrivate = 0;
|
||||
~~~~~~~~~~~~~
|
||||
!!! error TS2341: Property 'PublicPrivate' is private and only accessible within class 'Base'.
|
||||
this.ProtectedPublic = 0;
|
||||
this.ProtectedProtected = 0;
|
||||
this.ProtectedPrivate = 0;
|
||||
~~~~~~~~~~~~~~~~
|
||||
!!! error TS2341: Property 'ProtectedPrivate' is private and only accessible within class 'Base'.
|
||||
this.PrivatePublic = 0;
|
||||
this.PrivateProtected = 0;
|
||||
this.PrivatePrivate = 0;
|
||||
~~~~~~~~~~~~~~
|
||||
!!! error TS2341: Property 'PrivatePrivate' is private and only accessible within class 'Base'.
|
||||
|
||||
void this.PublicPublic;
|
||||
void this.PublicProtected;
|
||||
void this.PublicPrivate;
|
||||
void this.ProtectedPublic;
|
||||
void this.ProtectedProtected;
|
||||
void this.ProtectedPrivate;
|
||||
void this.PrivatePublic;
|
||||
~~~~~~~~~~~~~
|
||||
!!! error TS2341: Property 'PrivatePublic' is private and only accessible within class 'Base'.
|
||||
void this.PrivateProtected;
|
||||
~~~~~~~~~~~~~~~~
|
||||
!!! error TS2341: Property 'PrivateProtected' is private and only accessible within class 'Base'.
|
||||
void this.PrivatePrivate;
|
||||
~~~~~~~~~~~~~~
|
||||
!!! error TS2341: Property 'PrivatePrivate' is private and only accessible within class 'Base'.
|
||||
|
||||
this.PublicPublic += 0;
|
||||
this.PublicProtected += 0;
|
||||
this.PublicPrivate += 0;
|
||||
~~~~~~~~~~~~~
|
||||
!!! error TS2341: Property 'PublicPrivate' is private and only accessible within class 'Base'.
|
||||
this.ProtectedPublic += 0;
|
||||
this.ProtectedProtected += 0;
|
||||
this.ProtectedPrivate += 0;
|
||||
~~~~~~~~~~~~~~~~
|
||||
!!! error TS2341: Property 'ProtectedPrivate' is private and only accessible within class 'Base'.
|
||||
this.PrivatePublic += 0;
|
||||
this.PrivateProtected += 0;
|
||||
this.PrivatePrivate += 0;
|
||||
~~~~~~~~~~~~~~
|
||||
!!! error TS2341: Property 'PrivatePrivate' is private and only accessible within class 'Base'.
|
||||
}
|
||||
}
|
||||
|
||||
declare const base: Base, deriv: Derived;
|
||||
function fn() {
|
||||
base.PublicPublic = 0;
|
||||
base.PublicProtected = 0;
|
||||
~~~~~~~~~~~~~~~
|
||||
!!! error TS2445: Property 'PublicProtected' is protected and only accessible within class 'Base' and its subclasses.
|
||||
base.PublicPrivate = 0;
|
||||
~~~~~~~~~~~~~
|
||||
!!! error TS2341: Property 'PublicPrivate' is private and only accessible within class 'Base'.
|
||||
base.ProtectedPublic = 0;
|
||||
base.ProtectedProtected = 0;
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
!!! error TS2445: Property 'ProtectedProtected' is protected and only accessible within class 'Base' and its subclasses.
|
||||
base.ProtectedPrivate = 0;
|
||||
~~~~~~~~~~~~~~~~
|
||||
!!! error TS2341: Property 'ProtectedPrivate' is private and only accessible within class 'Base'.
|
||||
base.PrivatePublic = 0;
|
||||
base.PrivateProtected = 0;
|
||||
~~~~~~~~~~~~~~~~
|
||||
!!! error TS2445: Property 'PrivateProtected' is protected and only accessible within class 'Base' and its subclasses.
|
||||
base.PrivatePrivate = 0;
|
||||
~~~~~~~~~~~~~~
|
||||
!!! error TS2341: Property 'PrivatePrivate' is private and only accessible within class 'Base'.
|
||||
|
||||
void base.PublicPublic;
|
||||
void base.PublicProtected;
|
||||
void base.PublicPrivate;
|
||||
void base.ProtectedPublic;
|
||||
~~~~~~~~~~~~~~~
|
||||
!!! error TS2445: Property 'ProtectedPublic' is protected and only accessible within class 'Base' and its subclasses.
|
||||
void base.ProtectedProtected;
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
!!! error TS2445: Property 'ProtectedProtected' is protected and only accessible within class 'Base' and its subclasses.
|
||||
void base.ProtectedPrivate;
|
||||
~~~~~~~~~~~~~~~~
|
||||
!!! error TS2445: Property 'ProtectedPrivate' is protected and only accessible within class 'Base' and its subclasses.
|
||||
void base.PrivatePublic;
|
||||
~~~~~~~~~~~~~
|
||||
!!! error TS2341: Property 'PrivatePublic' is private and only accessible within class 'Base'.
|
||||
void base.PrivateProtected;
|
||||
~~~~~~~~~~~~~~~~
|
||||
!!! error TS2341: Property 'PrivateProtected' is private and only accessible within class 'Base'.
|
||||
void base.PrivatePrivate;
|
||||
~~~~~~~~~~~~~~
|
||||
!!! error TS2341: Property 'PrivatePrivate' is private and only accessible within class 'Base'.
|
||||
|
||||
base.PublicPublic += 0;
|
||||
base.PublicProtected += 0;
|
||||
~~~~~~~~~~~~~~~
|
||||
!!! error TS2445: Property 'PublicProtected' is protected and only accessible within class 'Base' and its subclasses.
|
||||
base.PublicPrivate += 0;
|
||||
~~~~~~~~~~~~~
|
||||
!!! error TS2341: Property 'PublicPrivate' is private and only accessible within class 'Base'.
|
||||
base.ProtectedPublic += 0;
|
||||
base.ProtectedProtected += 0;
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
!!! error TS2445: Property 'ProtectedProtected' is protected and only accessible within class 'Base' and its subclasses.
|
||||
base.ProtectedPrivate += 0;
|
||||
~~~~~~~~~~~~~~~~
|
||||
!!! error TS2341: Property 'ProtectedPrivate' is private and only accessible within class 'Base'.
|
||||
base.PrivatePublic += 0;
|
||||
base.PrivateProtected += 0;
|
||||
~~~~~~~~~~~~~~~~
|
||||
!!! error TS2445: Property 'PrivateProtected' is protected and only accessible within class 'Base' and its subclasses.
|
||||
base.PrivatePrivate += 0;
|
||||
~~~~~~~~~~~~~~
|
||||
!!! error TS2341: Property 'PrivatePrivate' is private and only accessible within class 'Base'.
|
||||
|
||||
deriv.PublicPublic = 0;
|
||||
deriv.PublicProtected = 0;
|
||||
~~~~~~~~~~~~~~~
|
||||
!!! error TS2445: Property 'PublicProtected' is protected and only accessible within class 'Base' and its subclasses.
|
||||
deriv.PublicPrivate = 0;
|
||||
~~~~~~~~~~~~~
|
||||
!!! error TS2341: Property 'PublicPrivate' is private and only accessible within class 'Base'.
|
||||
deriv.ProtectedPublic = 0;
|
||||
deriv.ProtectedProtected = 0;
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
!!! error TS2445: Property 'ProtectedProtected' is protected and only accessible within class 'Base' and its subclasses.
|
||||
deriv.ProtectedPrivate = 0;
|
||||
~~~~~~~~~~~~~~~~
|
||||
!!! error TS2341: Property 'ProtectedPrivate' is private and only accessible within class 'Base'.
|
||||
deriv.PrivatePublic = 0;
|
||||
deriv.PrivateProtected = 0;
|
||||
~~~~~~~~~~~~~~~~
|
||||
!!! error TS2445: Property 'PrivateProtected' is protected and only accessible within class 'Base' and its subclasses.
|
||||
deriv.PrivatePrivate = 0;
|
||||
~~~~~~~~~~~~~~
|
||||
!!! error TS2341: Property 'PrivatePrivate' is private and only accessible within class 'Base'.
|
||||
|
||||
void deriv.PublicPublic;
|
||||
void deriv.PublicProtected;
|
||||
void deriv.PublicPrivate;
|
||||
void deriv.ProtectedPublic;
|
||||
~~~~~~~~~~~~~~~
|
||||
!!! error TS2445: Property 'ProtectedPublic' is protected and only accessible within class 'Base' and its subclasses.
|
||||
void deriv.ProtectedProtected;
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
!!! error TS2445: Property 'ProtectedProtected' is protected and only accessible within class 'Base' and its subclasses.
|
||||
void deriv.ProtectedPrivate;
|
||||
~~~~~~~~~~~~~~~~
|
||||
!!! error TS2445: Property 'ProtectedPrivate' is protected and only accessible within class 'Base' and its subclasses.
|
||||
void deriv.PrivatePublic;
|
||||
~~~~~~~~~~~~~
|
||||
!!! error TS2341: Property 'PrivatePublic' is private and only accessible within class 'Base'.
|
||||
void deriv.PrivateProtected;
|
||||
~~~~~~~~~~~~~~~~
|
||||
!!! error TS2341: Property 'PrivateProtected' is private and only accessible within class 'Base'.
|
||||
void deriv.PrivatePrivate;
|
||||
~~~~~~~~~~~~~~
|
||||
!!! error TS2341: Property 'PrivatePrivate' is private and only accessible within class 'Base'.
|
||||
|
||||
deriv.PublicPublic += 0;
|
||||
deriv.PublicProtected += 0;
|
||||
~~~~~~~~~~~~~~~
|
||||
!!! error TS2445: Property 'PublicProtected' is protected and only accessible within class 'Base' and its subclasses.
|
||||
deriv.PublicPrivate += 0;
|
||||
~~~~~~~~~~~~~
|
||||
!!! error TS2341: Property 'PublicPrivate' is private and only accessible within class 'Base'.
|
||||
deriv.ProtectedPublic += 0;
|
||||
deriv.ProtectedProtected += 0;
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
!!! error TS2445: Property 'ProtectedProtected' is protected and only accessible within class 'Base' and its subclasses.
|
||||
deriv.ProtectedPrivate += 0;
|
||||
~~~~~~~~~~~~~~~~
|
||||
!!! error TS2341: Property 'ProtectedPrivate' is private and only accessible within class 'Base'.
|
||||
deriv.PrivatePublic += 0;
|
||||
deriv.PrivateProtected += 0;
|
||||
~~~~~~~~~~~~~~~~
|
||||
!!! error TS2445: Property 'PrivateProtected' is protected and only accessible within class 'Base' and its subclasses.
|
||||
deriv.PrivatePrivate += 0;
|
||||
~~~~~~~~~~~~~~
|
||||
!!! error TS2341: Property 'PrivatePrivate' is private and only accessible within class 'Base'.
|
||||
}
|
||||
|
||||
@@ -0,0 +1,298 @@
|
||||
//// [divergentAccessorsVisibility1.ts]
|
||||
class Base {
|
||||
get PublicPublic() { return 0; }
|
||||
set PublicPublic(v) { return; }
|
||||
|
||||
get PublicProtected() { return 0; }
|
||||
protected set PublicProtected(v) { return; }
|
||||
|
||||
get PublicPrivate() { return 0; }
|
||||
private set PublicPrivate(v) { return; }
|
||||
|
||||
protected get ProtectedPublic() { return 0; }
|
||||
set ProtectedPublic(v) { return; }
|
||||
|
||||
protected get ProtectedProtected() { return 0; }
|
||||
protected set ProtectedProtected(v) { return; }
|
||||
|
||||
protected get ProtectedPrivate() { return 0; }
|
||||
private set ProtectedPrivate(v) { return; }
|
||||
|
||||
private get PrivatePublic() { return 0; }
|
||||
set PrivatePublic(v) { return; }
|
||||
|
||||
private get PrivateProtected() { return 0; }
|
||||
protected set PrivateProtected(v) { return; }
|
||||
|
||||
private get PrivatePrivate() { return 0; }
|
||||
private set PrivatePrivate(v) { return; }
|
||||
|
||||
test() {
|
||||
this.PublicPublic = 0;
|
||||
this.PublicProtected = 0;
|
||||
this.PublicPrivate = 0;
|
||||
this.ProtectedPublic = 0;
|
||||
this.ProtectedProtected = 0;
|
||||
this.ProtectedPrivate = 0;
|
||||
this.PrivatePublic = 0;
|
||||
this.PrivateProtected = 0;
|
||||
this.PrivatePrivate = 0;
|
||||
|
||||
void this.PublicPublic;
|
||||
void this.PublicProtected;
|
||||
void this.PublicPrivate;
|
||||
void this.ProtectedPublic;
|
||||
void this.ProtectedProtected;
|
||||
void this.ProtectedPrivate;
|
||||
void this.PrivatePublic;
|
||||
void this.PrivateProtected;
|
||||
void this.PrivatePrivate;
|
||||
|
||||
this.PublicPublic += 0;
|
||||
this.PublicProtected += 0;
|
||||
this.PublicPrivate += 0;
|
||||
this.ProtectedPublic += 0;
|
||||
this.ProtectedProtected += 0;
|
||||
this.ProtectedPrivate += 0;
|
||||
this.PrivatePublic += 0;
|
||||
this.PrivateProtected += 0;
|
||||
this.PrivatePrivate += 0;
|
||||
}
|
||||
}
|
||||
|
||||
class Derived extends Base {
|
||||
test2() {
|
||||
this.PublicPublic = 0;
|
||||
this.PublicProtected = 0;
|
||||
this.PublicPrivate = 0;
|
||||
this.ProtectedPublic = 0;
|
||||
this.ProtectedProtected = 0;
|
||||
this.ProtectedPrivate = 0;
|
||||
this.PrivatePublic = 0;
|
||||
this.PrivateProtected = 0;
|
||||
this.PrivatePrivate = 0;
|
||||
|
||||
void this.PublicPublic;
|
||||
void this.PublicProtected;
|
||||
void this.PublicPrivate;
|
||||
void this.ProtectedPublic;
|
||||
void this.ProtectedProtected;
|
||||
void this.ProtectedPrivate;
|
||||
void this.PrivatePublic;
|
||||
void this.PrivateProtected;
|
||||
void this.PrivatePrivate;
|
||||
|
||||
this.PublicPublic += 0;
|
||||
this.PublicProtected += 0;
|
||||
this.PublicPrivate += 0;
|
||||
this.ProtectedPublic += 0;
|
||||
this.ProtectedProtected += 0;
|
||||
this.ProtectedPrivate += 0;
|
||||
this.PrivatePublic += 0;
|
||||
this.PrivateProtected += 0;
|
||||
this.PrivatePrivate += 0;
|
||||
}
|
||||
}
|
||||
|
||||
declare const base: Base, deriv: Derived;
|
||||
function fn() {
|
||||
base.PublicPublic = 0;
|
||||
base.PublicProtected = 0;
|
||||
base.PublicPrivate = 0;
|
||||
base.ProtectedPublic = 0;
|
||||
base.ProtectedProtected = 0;
|
||||
base.ProtectedPrivate = 0;
|
||||
base.PrivatePublic = 0;
|
||||
base.PrivateProtected = 0;
|
||||
base.PrivatePrivate = 0;
|
||||
|
||||
void base.PublicPublic;
|
||||
void base.PublicProtected;
|
||||
void base.PublicPrivate;
|
||||
void base.ProtectedPublic;
|
||||
void base.ProtectedProtected;
|
||||
void base.ProtectedPrivate;
|
||||
void base.PrivatePublic;
|
||||
void base.PrivateProtected;
|
||||
void base.PrivatePrivate;
|
||||
|
||||
base.PublicPublic += 0;
|
||||
base.PublicProtected += 0;
|
||||
base.PublicPrivate += 0;
|
||||
base.ProtectedPublic += 0;
|
||||
base.ProtectedProtected += 0;
|
||||
base.ProtectedPrivate += 0;
|
||||
base.PrivatePublic += 0;
|
||||
base.PrivateProtected += 0;
|
||||
base.PrivatePrivate += 0;
|
||||
|
||||
deriv.PublicPublic = 0;
|
||||
deriv.PublicProtected = 0;
|
||||
deriv.PublicPrivate = 0;
|
||||
deriv.ProtectedPublic = 0;
|
||||
deriv.ProtectedProtected = 0;
|
||||
deriv.ProtectedPrivate = 0;
|
||||
deriv.PrivatePublic = 0;
|
||||
deriv.PrivateProtected = 0;
|
||||
deriv.PrivatePrivate = 0;
|
||||
|
||||
void deriv.PublicPublic;
|
||||
void deriv.PublicProtected;
|
||||
void deriv.PublicPrivate;
|
||||
void deriv.ProtectedPublic;
|
||||
void deriv.ProtectedProtected;
|
||||
void deriv.ProtectedPrivate;
|
||||
void deriv.PrivatePublic;
|
||||
void deriv.PrivateProtected;
|
||||
void deriv.PrivatePrivate;
|
||||
|
||||
deriv.PublicPublic += 0;
|
||||
deriv.PublicProtected += 0;
|
||||
deriv.PublicPrivate += 0;
|
||||
deriv.ProtectedPublic += 0;
|
||||
deriv.ProtectedProtected += 0;
|
||||
deriv.ProtectedPrivate += 0;
|
||||
deriv.PrivatePublic += 0;
|
||||
deriv.PrivateProtected += 0;
|
||||
deriv.PrivatePrivate += 0;
|
||||
}
|
||||
|
||||
|
||||
//// [divergentAccessorsVisibility1.js]
|
||||
"use strict";
|
||||
class Base {
|
||||
get PublicPublic() { return 0; }
|
||||
set PublicPublic(v) { return; }
|
||||
get PublicProtected() { return 0; }
|
||||
set PublicProtected(v) { return; }
|
||||
get PublicPrivate() { return 0; }
|
||||
set PublicPrivate(v) { return; }
|
||||
get ProtectedPublic() { return 0; }
|
||||
set ProtectedPublic(v) { return; }
|
||||
get ProtectedProtected() { return 0; }
|
||||
set ProtectedProtected(v) { return; }
|
||||
get ProtectedPrivate() { return 0; }
|
||||
set ProtectedPrivate(v) { return; }
|
||||
get PrivatePublic() { return 0; }
|
||||
set PrivatePublic(v) { return; }
|
||||
get PrivateProtected() { return 0; }
|
||||
set PrivateProtected(v) { return; }
|
||||
get PrivatePrivate() { return 0; }
|
||||
set PrivatePrivate(v) { return; }
|
||||
test() {
|
||||
this.PublicPublic = 0;
|
||||
this.PublicProtected = 0;
|
||||
this.PublicPrivate = 0;
|
||||
this.ProtectedPublic = 0;
|
||||
this.ProtectedProtected = 0;
|
||||
this.ProtectedPrivate = 0;
|
||||
this.PrivatePublic = 0;
|
||||
this.PrivateProtected = 0;
|
||||
this.PrivatePrivate = 0;
|
||||
void this.PublicPublic;
|
||||
void this.PublicProtected;
|
||||
void this.PublicPrivate;
|
||||
void this.ProtectedPublic;
|
||||
void this.ProtectedProtected;
|
||||
void this.ProtectedPrivate;
|
||||
void this.PrivatePublic;
|
||||
void this.PrivateProtected;
|
||||
void this.PrivatePrivate;
|
||||
this.PublicPublic += 0;
|
||||
this.PublicProtected += 0;
|
||||
this.PublicPrivate += 0;
|
||||
this.ProtectedPublic += 0;
|
||||
this.ProtectedProtected += 0;
|
||||
this.ProtectedPrivate += 0;
|
||||
this.PrivatePublic += 0;
|
||||
this.PrivateProtected += 0;
|
||||
this.PrivatePrivate += 0;
|
||||
}
|
||||
}
|
||||
class Derived extends Base {
|
||||
test2() {
|
||||
this.PublicPublic = 0;
|
||||
this.PublicProtected = 0;
|
||||
this.PublicPrivate = 0;
|
||||
this.ProtectedPublic = 0;
|
||||
this.ProtectedProtected = 0;
|
||||
this.ProtectedPrivate = 0;
|
||||
this.PrivatePublic = 0;
|
||||
this.PrivateProtected = 0;
|
||||
this.PrivatePrivate = 0;
|
||||
void this.PublicPublic;
|
||||
void this.PublicProtected;
|
||||
void this.PublicPrivate;
|
||||
void this.ProtectedPublic;
|
||||
void this.ProtectedProtected;
|
||||
void this.ProtectedPrivate;
|
||||
void this.PrivatePublic;
|
||||
void this.PrivateProtected;
|
||||
void this.PrivatePrivate;
|
||||
this.PublicPublic += 0;
|
||||
this.PublicProtected += 0;
|
||||
this.PublicPrivate += 0;
|
||||
this.ProtectedPublic += 0;
|
||||
this.ProtectedProtected += 0;
|
||||
this.ProtectedPrivate += 0;
|
||||
this.PrivatePublic += 0;
|
||||
this.PrivateProtected += 0;
|
||||
this.PrivatePrivate += 0;
|
||||
}
|
||||
}
|
||||
function fn() {
|
||||
base.PublicPublic = 0;
|
||||
base.PublicProtected = 0;
|
||||
base.PublicPrivate = 0;
|
||||
base.ProtectedPublic = 0;
|
||||
base.ProtectedProtected = 0;
|
||||
base.ProtectedPrivate = 0;
|
||||
base.PrivatePublic = 0;
|
||||
base.PrivateProtected = 0;
|
||||
base.PrivatePrivate = 0;
|
||||
void base.PublicPublic;
|
||||
void base.PublicProtected;
|
||||
void base.PublicPrivate;
|
||||
void base.ProtectedPublic;
|
||||
void base.ProtectedProtected;
|
||||
void base.ProtectedPrivate;
|
||||
void base.PrivatePublic;
|
||||
void base.PrivateProtected;
|
||||
void base.PrivatePrivate;
|
||||
base.PublicPublic += 0;
|
||||
base.PublicProtected += 0;
|
||||
base.PublicPrivate += 0;
|
||||
base.ProtectedPublic += 0;
|
||||
base.ProtectedProtected += 0;
|
||||
base.ProtectedPrivate += 0;
|
||||
base.PrivatePublic += 0;
|
||||
base.PrivateProtected += 0;
|
||||
base.PrivatePrivate += 0;
|
||||
deriv.PublicPublic = 0;
|
||||
deriv.PublicProtected = 0;
|
||||
deriv.PublicPrivate = 0;
|
||||
deriv.ProtectedPublic = 0;
|
||||
deriv.ProtectedProtected = 0;
|
||||
deriv.ProtectedPrivate = 0;
|
||||
deriv.PrivatePublic = 0;
|
||||
deriv.PrivateProtected = 0;
|
||||
deriv.PrivatePrivate = 0;
|
||||
void deriv.PublicPublic;
|
||||
void deriv.PublicProtected;
|
||||
void deriv.PublicPrivate;
|
||||
void deriv.ProtectedPublic;
|
||||
void deriv.ProtectedProtected;
|
||||
void deriv.ProtectedPrivate;
|
||||
void deriv.PrivatePublic;
|
||||
void deriv.PrivateProtected;
|
||||
void deriv.PrivatePrivate;
|
||||
deriv.PublicPublic += 0;
|
||||
deriv.PublicProtected += 0;
|
||||
deriv.PublicPrivate += 0;
|
||||
deriv.ProtectedPublic += 0;
|
||||
deriv.ProtectedProtected += 0;
|
||||
deriv.ProtectedPrivate += 0;
|
||||
deriv.PrivatePublic += 0;
|
||||
deriv.PrivateProtected += 0;
|
||||
deriv.PrivatePrivate += 0;
|
||||
}
|
||||
@@ -0,0 +1,631 @@
|
||||
=== tests/cases/compiler/divergentAccessorsVisibility1.ts ===
|
||||
class Base {
|
||||
>Base : Symbol(Base, Decl(divergentAccessorsVisibility1.ts, 0, 0))
|
||||
|
||||
get PublicPublic() { return 0; }
|
||||
>PublicPublic : Symbol(Base.PublicPublic, Decl(divergentAccessorsVisibility1.ts, 0, 12), Decl(divergentAccessorsVisibility1.ts, 1, 36))
|
||||
|
||||
set PublicPublic(v) { return; }
|
||||
>PublicPublic : Symbol(Base.PublicPublic, Decl(divergentAccessorsVisibility1.ts, 0, 12), Decl(divergentAccessorsVisibility1.ts, 1, 36))
|
||||
>v : Symbol(v, Decl(divergentAccessorsVisibility1.ts, 2, 21))
|
||||
|
||||
get PublicProtected() { return 0; }
|
||||
>PublicProtected : Symbol(Base.PublicProtected, Decl(divergentAccessorsVisibility1.ts, 2, 35), Decl(divergentAccessorsVisibility1.ts, 4, 39))
|
||||
|
||||
protected set PublicProtected(v) { return; }
|
||||
>PublicProtected : Symbol(Base.PublicProtected, Decl(divergentAccessorsVisibility1.ts, 2, 35), Decl(divergentAccessorsVisibility1.ts, 4, 39))
|
||||
>v : Symbol(v, Decl(divergentAccessorsVisibility1.ts, 5, 34))
|
||||
|
||||
get PublicPrivate() { return 0; }
|
||||
>PublicPrivate : Symbol(Base.PublicPrivate, Decl(divergentAccessorsVisibility1.ts, 5, 48), Decl(divergentAccessorsVisibility1.ts, 7, 37))
|
||||
|
||||
private set PublicPrivate(v) { return; }
|
||||
>PublicPrivate : Symbol(Base.PublicPrivate, Decl(divergentAccessorsVisibility1.ts, 5, 48), Decl(divergentAccessorsVisibility1.ts, 7, 37))
|
||||
>v : Symbol(v, Decl(divergentAccessorsVisibility1.ts, 8, 30))
|
||||
|
||||
protected get ProtectedPublic() { return 0; }
|
||||
>ProtectedPublic : Symbol(Base.ProtectedPublic, Decl(divergentAccessorsVisibility1.ts, 8, 44), Decl(divergentAccessorsVisibility1.ts, 10, 49))
|
||||
|
||||
set ProtectedPublic(v) { return; }
|
||||
>ProtectedPublic : Symbol(Base.ProtectedPublic, Decl(divergentAccessorsVisibility1.ts, 8, 44), Decl(divergentAccessorsVisibility1.ts, 10, 49))
|
||||
>v : Symbol(v, Decl(divergentAccessorsVisibility1.ts, 11, 24))
|
||||
|
||||
protected get ProtectedProtected() { return 0; }
|
||||
>ProtectedProtected : Symbol(Base.ProtectedProtected, Decl(divergentAccessorsVisibility1.ts, 11, 38), Decl(divergentAccessorsVisibility1.ts, 13, 52))
|
||||
|
||||
protected set ProtectedProtected(v) { return; }
|
||||
>ProtectedProtected : Symbol(Base.ProtectedProtected, Decl(divergentAccessorsVisibility1.ts, 11, 38), Decl(divergentAccessorsVisibility1.ts, 13, 52))
|
||||
>v : Symbol(v, Decl(divergentAccessorsVisibility1.ts, 14, 37))
|
||||
|
||||
protected get ProtectedPrivate() { return 0; }
|
||||
>ProtectedPrivate : Symbol(Base.ProtectedPrivate, Decl(divergentAccessorsVisibility1.ts, 14, 51), Decl(divergentAccessorsVisibility1.ts, 16, 50))
|
||||
|
||||
private set ProtectedPrivate(v) { return; }
|
||||
>ProtectedPrivate : Symbol(Base.ProtectedPrivate, Decl(divergentAccessorsVisibility1.ts, 14, 51), Decl(divergentAccessorsVisibility1.ts, 16, 50))
|
||||
>v : Symbol(v, Decl(divergentAccessorsVisibility1.ts, 17, 33))
|
||||
|
||||
private get PrivatePublic() { return 0; }
|
||||
>PrivatePublic : Symbol(Base.PrivatePublic, Decl(divergentAccessorsVisibility1.ts, 17, 47), Decl(divergentAccessorsVisibility1.ts, 19, 45))
|
||||
|
||||
set PrivatePublic(v) { return; }
|
||||
>PrivatePublic : Symbol(Base.PrivatePublic, Decl(divergentAccessorsVisibility1.ts, 17, 47), Decl(divergentAccessorsVisibility1.ts, 19, 45))
|
||||
>v : Symbol(v, Decl(divergentAccessorsVisibility1.ts, 20, 22))
|
||||
|
||||
private get PrivateProtected() { return 0; }
|
||||
>PrivateProtected : Symbol(Base.PrivateProtected, Decl(divergentAccessorsVisibility1.ts, 20, 36), Decl(divergentAccessorsVisibility1.ts, 22, 48))
|
||||
|
||||
protected set PrivateProtected(v) { return; }
|
||||
>PrivateProtected : Symbol(Base.PrivateProtected, Decl(divergentAccessorsVisibility1.ts, 20, 36), Decl(divergentAccessorsVisibility1.ts, 22, 48))
|
||||
>v : Symbol(v, Decl(divergentAccessorsVisibility1.ts, 23, 35))
|
||||
|
||||
private get PrivatePrivate() { return 0; }
|
||||
>PrivatePrivate : Symbol(Base.PrivatePrivate, Decl(divergentAccessorsVisibility1.ts, 23, 49), Decl(divergentAccessorsVisibility1.ts, 25, 46))
|
||||
|
||||
private set PrivatePrivate(v) { return; }
|
||||
>PrivatePrivate : Symbol(Base.PrivatePrivate, Decl(divergentAccessorsVisibility1.ts, 23, 49), Decl(divergentAccessorsVisibility1.ts, 25, 46))
|
||||
>v : Symbol(v, Decl(divergentAccessorsVisibility1.ts, 26, 31))
|
||||
|
||||
test() {
|
||||
>test : Symbol(Base.test, Decl(divergentAccessorsVisibility1.ts, 26, 45))
|
||||
|
||||
this.PublicPublic = 0;
|
||||
>this.PublicPublic : Symbol(Base.PublicPublic, Decl(divergentAccessorsVisibility1.ts, 0, 12), Decl(divergentAccessorsVisibility1.ts, 1, 36))
|
||||
>this : Symbol(Base, Decl(divergentAccessorsVisibility1.ts, 0, 0))
|
||||
>PublicPublic : Symbol(Base.PublicPublic, Decl(divergentAccessorsVisibility1.ts, 0, 12), Decl(divergentAccessorsVisibility1.ts, 1, 36))
|
||||
|
||||
this.PublicProtected = 0;
|
||||
>this.PublicProtected : Symbol(Base.PublicProtected, Decl(divergentAccessorsVisibility1.ts, 2, 35), Decl(divergentAccessorsVisibility1.ts, 4, 39))
|
||||
>this : Symbol(Base, Decl(divergentAccessorsVisibility1.ts, 0, 0))
|
||||
>PublicProtected : Symbol(Base.PublicProtected, Decl(divergentAccessorsVisibility1.ts, 2, 35), Decl(divergentAccessorsVisibility1.ts, 4, 39))
|
||||
|
||||
this.PublicPrivate = 0;
|
||||
>this.PublicPrivate : Symbol(Base.PublicPrivate, Decl(divergentAccessorsVisibility1.ts, 5, 48), Decl(divergentAccessorsVisibility1.ts, 7, 37))
|
||||
>this : Symbol(Base, Decl(divergentAccessorsVisibility1.ts, 0, 0))
|
||||
>PublicPrivate : Symbol(Base.PublicPrivate, Decl(divergentAccessorsVisibility1.ts, 5, 48), Decl(divergentAccessorsVisibility1.ts, 7, 37))
|
||||
|
||||
this.ProtectedPublic = 0;
|
||||
>this.ProtectedPublic : Symbol(Base.ProtectedPublic, Decl(divergentAccessorsVisibility1.ts, 8, 44), Decl(divergentAccessorsVisibility1.ts, 10, 49))
|
||||
>this : Symbol(Base, Decl(divergentAccessorsVisibility1.ts, 0, 0))
|
||||
>ProtectedPublic : Symbol(Base.ProtectedPublic, Decl(divergentAccessorsVisibility1.ts, 8, 44), Decl(divergentAccessorsVisibility1.ts, 10, 49))
|
||||
|
||||
this.ProtectedProtected = 0;
|
||||
>this.ProtectedProtected : Symbol(Base.ProtectedProtected, Decl(divergentAccessorsVisibility1.ts, 11, 38), Decl(divergentAccessorsVisibility1.ts, 13, 52))
|
||||
>this : Symbol(Base, Decl(divergentAccessorsVisibility1.ts, 0, 0))
|
||||
>ProtectedProtected : Symbol(Base.ProtectedProtected, Decl(divergentAccessorsVisibility1.ts, 11, 38), Decl(divergentAccessorsVisibility1.ts, 13, 52))
|
||||
|
||||
this.ProtectedPrivate = 0;
|
||||
>this.ProtectedPrivate : Symbol(Base.ProtectedPrivate, Decl(divergentAccessorsVisibility1.ts, 14, 51), Decl(divergentAccessorsVisibility1.ts, 16, 50))
|
||||
>this : Symbol(Base, Decl(divergentAccessorsVisibility1.ts, 0, 0))
|
||||
>ProtectedPrivate : Symbol(Base.ProtectedPrivate, Decl(divergentAccessorsVisibility1.ts, 14, 51), Decl(divergentAccessorsVisibility1.ts, 16, 50))
|
||||
|
||||
this.PrivatePublic = 0;
|
||||
>this.PrivatePublic : Symbol(Base.PrivatePublic, Decl(divergentAccessorsVisibility1.ts, 17, 47), Decl(divergentAccessorsVisibility1.ts, 19, 45))
|
||||
>this : Symbol(Base, Decl(divergentAccessorsVisibility1.ts, 0, 0))
|
||||
>PrivatePublic : Symbol(Base.PrivatePublic, Decl(divergentAccessorsVisibility1.ts, 17, 47), Decl(divergentAccessorsVisibility1.ts, 19, 45))
|
||||
|
||||
this.PrivateProtected = 0;
|
||||
>this.PrivateProtected : Symbol(Base.PrivateProtected, Decl(divergentAccessorsVisibility1.ts, 20, 36), Decl(divergentAccessorsVisibility1.ts, 22, 48))
|
||||
>this : Symbol(Base, Decl(divergentAccessorsVisibility1.ts, 0, 0))
|
||||
>PrivateProtected : Symbol(Base.PrivateProtected, Decl(divergentAccessorsVisibility1.ts, 20, 36), Decl(divergentAccessorsVisibility1.ts, 22, 48))
|
||||
|
||||
this.PrivatePrivate = 0;
|
||||
>this.PrivatePrivate : Symbol(Base.PrivatePrivate, Decl(divergentAccessorsVisibility1.ts, 23, 49), Decl(divergentAccessorsVisibility1.ts, 25, 46))
|
||||
>this : Symbol(Base, Decl(divergentAccessorsVisibility1.ts, 0, 0))
|
||||
>PrivatePrivate : Symbol(Base.PrivatePrivate, Decl(divergentAccessorsVisibility1.ts, 23, 49), Decl(divergentAccessorsVisibility1.ts, 25, 46))
|
||||
|
||||
void this.PublicPublic;
|
||||
>this.PublicPublic : Symbol(Base.PublicPublic, Decl(divergentAccessorsVisibility1.ts, 0, 12), Decl(divergentAccessorsVisibility1.ts, 1, 36))
|
||||
>this : Symbol(Base, Decl(divergentAccessorsVisibility1.ts, 0, 0))
|
||||
>PublicPublic : Symbol(Base.PublicPublic, Decl(divergentAccessorsVisibility1.ts, 0, 12), Decl(divergentAccessorsVisibility1.ts, 1, 36))
|
||||
|
||||
void this.PublicProtected;
|
||||
>this.PublicProtected : Symbol(Base.PublicProtected, Decl(divergentAccessorsVisibility1.ts, 2, 35), Decl(divergentAccessorsVisibility1.ts, 4, 39))
|
||||
>this : Symbol(Base, Decl(divergentAccessorsVisibility1.ts, 0, 0))
|
||||
>PublicProtected : Symbol(Base.PublicProtected, Decl(divergentAccessorsVisibility1.ts, 2, 35), Decl(divergentAccessorsVisibility1.ts, 4, 39))
|
||||
|
||||
void this.PublicPrivate;
|
||||
>this.PublicPrivate : Symbol(Base.PublicPrivate, Decl(divergentAccessorsVisibility1.ts, 5, 48), Decl(divergentAccessorsVisibility1.ts, 7, 37))
|
||||
>this : Symbol(Base, Decl(divergentAccessorsVisibility1.ts, 0, 0))
|
||||
>PublicPrivate : Symbol(Base.PublicPrivate, Decl(divergentAccessorsVisibility1.ts, 5, 48), Decl(divergentAccessorsVisibility1.ts, 7, 37))
|
||||
|
||||
void this.ProtectedPublic;
|
||||
>this.ProtectedPublic : Symbol(Base.ProtectedPublic, Decl(divergentAccessorsVisibility1.ts, 8, 44), Decl(divergentAccessorsVisibility1.ts, 10, 49))
|
||||
>this : Symbol(Base, Decl(divergentAccessorsVisibility1.ts, 0, 0))
|
||||
>ProtectedPublic : Symbol(Base.ProtectedPublic, Decl(divergentAccessorsVisibility1.ts, 8, 44), Decl(divergentAccessorsVisibility1.ts, 10, 49))
|
||||
|
||||
void this.ProtectedProtected;
|
||||
>this.ProtectedProtected : Symbol(Base.ProtectedProtected, Decl(divergentAccessorsVisibility1.ts, 11, 38), Decl(divergentAccessorsVisibility1.ts, 13, 52))
|
||||
>this : Symbol(Base, Decl(divergentAccessorsVisibility1.ts, 0, 0))
|
||||
>ProtectedProtected : Symbol(Base.ProtectedProtected, Decl(divergentAccessorsVisibility1.ts, 11, 38), Decl(divergentAccessorsVisibility1.ts, 13, 52))
|
||||
|
||||
void this.ProtectedPrivate;
|
||||
>this.ProtectedPrivate : Symbol(Base.ProtectedPrivate, Decl(divergentAccessorsVisibility1.ts, 14, 51), Decl(divergentAccessorsVisibility1.ts, 16, 50))
|
||||
>this : Symbol(Base, Decl(divergentAccessorsVisibility1.ts, 0, 0))
|
||||
>ProtectedPrivate : Symbol(Base.ProtectedPrivate, Decl(divergentAccessorsVisibility1.ts, 14, 51), Decl(divergentAccessorsVisibility1.ts, 16, 50))
|
||||
|
||||
void this.PrivatePublic;
|
||||
>this.PrivatePublic : Symbol(Base.PrivatePublic, Decl(divergentAccessorsVisibility1.ts, 17, 47), Decl(divergentAccessorsVisibility1.ts, 19, 45))
|
||||
>this : Symbol(Base, Decl(divergentAccessorsVisibility1.ts, 0, 0))
|
||||
>PrivatePublic : Symbol(Base.PrivatePublic, Decl(divergentAccessorsVisibility1.ts, 17, 47), Decl(divergentAccessorsVisibility1.ts, 19, 45))
|
||||
|
||||
void this.PrivateProtected;
|
||||
>this.PrivateProtected : Symbol(Base.PrivateProtected, Decl(divergentAccessorsVisibility1.ts, 20, 36), Decl(divergentAccessorsVisibility1.ts, 22, 48))
|
||||
>this : Symbol(Base, Decl(divergentAccessorsVisibility1.ts, 0, 0))
|
||||
>PrivateProtected : Symbol(Base.PrivateProtected, Decl(divergentAccessorsVisibility1.ts, 20, 36), Decl(divergentAccessorsVisibility1.ts, 22, 48))
|
||||
|
||||
void this.PrivatePrivate;
|
||||
>this.PrivatePrivate : Symbol(Base.PrivatePrivate, Decl(divergentAccessorsVisibility1.ts, 23, 49), Decl(divergentAccessorsVisibility1.ts, 25, 46))
|
||||
>this : Symbol(Base, Decl(divergentAccessorsVisibility1.ts, 0, 0))
|
||||
>PrivatePrivate : Symbol(Base.PrivatePrivate, Decl(divergentAccessorsVisibility1.ts, 23, 49), Decl(divergentAccessorsVisibility1.ts, 25, 46))
|
||||
|
||||
this.PublicPublic += 0;
|
||||
>this.PublicPublic : Symbol(Base.PublicPublic, Decl(divergentAccessorsVisibility1.ts, 0, 12), Decl(divergentAccessorsVisibility1.ts, 1, 36))
|
||||
>this : Symbol(Base, Decl(divergentAccessorsVisibility1.ts, 0, 0))
|
||||
>PublicPublic : Symbol(Base.PublicPublic, Decl(divergentAccessorsVisibility1.ts, 0, 12), Decl(divergentAccessorsVisibility1.ts, 1, 36))
|
||||
|
||||
this.PublicProtected += 0;
|
||||
>this.PublicProtected : Symbol(Base.PublicProtected, Decl(divergentAccessorsVisibility1.ts, 2, 35), Decl(divergentAccessorsVisibility1.ts, 4, 39))
|
||||
>this : Symbol(Base, Decl(divergentAccessorsVisibility1.ts, 0, 0))
|
||||
>PublicProtected : Symbol(Base.PublicProtected, Decl(divergentAccessorsVisibility1.ts, 2, 35), Decl(divergentAccessorsVisibility1.ts, 4, 39))
|
||||
|
||||
this.PublicPrivate += 0;
|
||||
>this.PublicPrivate : Symbol(Base.PublicPrivate, Decl(divergentAccessorsVisibility1.ts, 5, 48), Decl(divergentAccessorsVisibility1.ts, 7, 37))
|
||||
>this : Symbol(Base, Decl(divergentAccessorsVisibility1.ts, 0, 0))
|
||||
>PublicPrivate : Symbol(Base.PublicPrivate, Decl(divergentAccessorsVisibility1.ts, 5, 48), Decl(divergentAccessorsVisibility1.ts, 7, 37))
|
||||
|
||||
this.ProtectedPublic += 0;
|
||||
>this.ProtectedPublic : Symbol(Base.ProtectedPublic, Decl(divergentAccessorsVisibility1.ts, 8, 44), Decl(divergentAccessorsVisibility1.ts, 10, 49))
|
||||
>this : Symbol(Base, Decl(divergentAccessorsVisibility1.ts, 0, 0))
|
||||
>ProtectedPublic : Symbol(Base.ProtectedPublic, Decl(divergentAccessorsVisibility1.ts, 8, 44), Decl(divergentAccessorsVisibility1.ts, 10, 49))
|
||||
|
||||
this.ProtectedProtected += 0;
|
||||
>this.ProtectedProtected : Symbol(Base.ProtectedProtected, Decl(divergentAccessorsVisibility1.ts, 11, 38), Decl(divergentAccessorsVisibility1.ts, 13, 52))
|
||||
>this : Symbol(Base, Decl(divergentAccessorsVisibility1.ts, 0, 0))
|
||||
>ProtectedProtected : Symbol(Base.ProtectedProtected, Decl(divergentAccessorsVisibility1.ts, 11, 38), Decl(divergentAccessorsVisibility1.ts, 13, 52))
|
||||
|
||||
this.ProtectedPrivate += 0;
|
||||
>this.ProtectedPrivate : Symbol(Base.ProtectedPrivate, Decl(divergentAccessorsVisibility1.ts, 14, 51), Decl(divergentAccessorsVisibility1.ts, 16, 50))
|
||||
>this : Symbol(Base, Decl(divergentAccessorsVisibility1.ts, 0, 0))
|
||||
>ProtectedPrivate : Symbol(Base.ProtectedPrivate, Decl(divergentAccessorsVisibility1.ts, 14, 51), Decl(divergentAccessorsVisibility1.ts, 16, 50))
|
||||
|
||||
this.PrivatePublic += 0;
|
||||
>this.PrivatePublic : Symbol(Base.PrivatePublic, Decl(divergentAccessorsVisibility1.ts, 17, 47), Decl(divergentAccessorsVisibility1.ts, 19, 45))
|
||||
>this : Symbol(Base, Decl(divergentAccessorsVisibility1.ts, 0, 0))
|
||||
>PrivatePublic : Symbol(Base.PrivatePublic, Decl(divergentAccessorsVisibility1.ts, 17, 47), Decl(divergentAccessorsVisibility1.ts, 19, 45))
|
||||
|
||||
this.PrivateProtected += 0;
|
||||
>this.PrivateProtected : Symbol(Base.PrivateProtected, Decl(divergentAccessorsVisibility1.ts, 20, 36), Decl(divergentAccessorsVisibility1.ts, 22, 48))
|
||||
>this : Symbol(Base, Decl(divergentAccessorsVisibility1.ts, 0, 0))
|
||||
>PrivateProtected : Symbol(Base.PrivateProtected, Decl(divergentAccessorsVisibility1.ts, 20, 36), Decl(divergentAccessorsVisibility1.ts, 22, 48))
|
||||
|
||||
this.PrivatePrivate += 0;
|
||||
>this.PrivatePrivate : Symbol(Base.PrivatePrivate, Decl(divergentAccessorsVisibility1.ts, 23, 49), Decl(divergentAccessorsVisibility1.ts, 25, 46))
|
||||
>this : Symbol(Base, Decl(divergentAccessorsVisibility1.ts, 0, 0))
|
||||
>PrivatePrivate : Symbol(Base.PrivatePrivate, Decl(divergentAccessorsVisibility1.ts, 23, 49), Decl(divergentAccessorsVisibility1.ts, 25, 46))
|
||||
}
|
||||
}
|
||||
|
||||
class Derived extends Base {
|
||||
>Derived : Symbol(Derived, Decl(divergentAccessorsVisibility1.ts, 59, 1))
|
||||
>Base : Symbol(Base, Decl(divergentAccessorsVisibility1.ts, 0, 0))
|
||||
|
||||
test2() {
|
||||
>test2 : Symbol(Derived.test2, Decl(divergentAccessorsVisibility1.ts, 61, 28))
|
||||
|
||||
this.PublicPublic = 0;
|
||||
>this.PublicPublic : Symbol(Base.PublicPublic, Decl(divergentAccessorsVisibility1.ts, 0, 12), Decl(divergentAccessorsVisibility1.ts, 1, 36))
|
||||
>this : Symbol(Derived, Decl(divergentAccessorsVisibility1.ts, 59, 1))
|
||||
>PublicPublic : Symbol(Base.PublicPublic, Decl(divergentAccessorsVisibility1.ts, 0, 12), Decl(divergentAccessorsVisibility1.ts, 1, 36))
|
||||
|
||||
this.PublicProtected = 0;
|
||||
>this.PublicProtected : Symbol(Base.PublicProtected, Decl(divergentAccessorsVisibility1.ts, 2, 35), Decl(divergentAccessorsVisibility1.ts, 4, 39))
|
||||
>this : Symbol(Derived, Decl(divergentAccessorsVisibility1.ts, 59, 1))
|
||||
>PublicProtected : Symbol(Base.PublicProtected, Decl(divergentAccessorsVisibility1.ts, 2, 35), Decl(divergentAccessorsVisibility1.ts, 4, 39))
|
||||
|
||||
this.PublicPrivate = 0;
|
||||
>this.PublicPrivate : Symbol(Base.PublicPrivate, Decl(divergentAccessorsVisibility1.ts, 5, 48), Decl(divergentAccessorsVisibility1.ts, 7, 37))
|
||||
>this : Symbol(Derived, Decl(divergentAccessorsVisibility1.ts, 59, 1))
|
||||
>PublicPrivate : Symbol(Base.PublicPrivate, Decl(divergentAccessorsVisibility1.ts, 5, 48), Decl(divergentAccessorsVisibility1.ts, 7, 37))
|
||||
|
||||
this.ProtectedPublic = 0;
|
||||
>this.ProtectedPublic : Symbol(Base.ProtectedPublic, Decl(divergentAccessorsVisibility1.ts, 8, 44), Decl(divergentAccessorsVisibility1.ts, 10, 49))
|
||||
>this : Symbol(Derived, Decl(divergentAccessorsVisibility1.ts, 59, 1))
|
||||
>ProtectedPublic : Symbol(Base.ProtectedPublic, Decl(divergentAccessorsVisibility1.ts, 8, 44), Decl(divergentAccessorsVisibility1.ts, 10, 49))
|
||||
|
||||
this.ProtectedProtected = 0;
|
||||
>this.ProtectedProtected : Symbol(Base.ProtectedProtected, Decl(divergentAccessorsVisibility1.ts, 11, 38), Decl(divergentAccessorsVisibility1.ts, 13, 52))
|
||||
>this : Symbol(Derived, Decl(divergentAccessorsVisibility1.ts, 59, 1))
|
||||
>ProtectedProtected : Symbol(Base.ProtectedProtected, Decl(divergentAccessorsVisibility1.ts, 11, 38), Decl(divergentAccessorsVisibility1.ts, 13, 52))
|
||||
|
||||
this.ProtectedPrivate = 0;
|
||||
>this.ProtectedPrivate : Symbol(Base.ProtectedPrivate, Decl(divergentAccessorsVisibility1.ts, 14, 51), Decl(divergentAccessorsVisibility1.ts, 16, 50))
|
||||
>this : Symbol(Derived, Decl(divergentAccessorsVisibility1.ts, 59, 1))
|
||||
>ProtectedPrivate : Symbol(Base.ProtectedPrivate, Decl(divergentAccessorsVisibility1.ts, 14, 51), Decl(divergentAccessorsVisibility1.ts, 16, 50))
|
||||
|
||||
this.PrivatePublic = 0;
|
||||
>this.PrivatePublic : Symbol(Base.PrivatePublic, Decl(divergentAccessorsVisibility1.ts, 17, 47), Decl(divergentAccessorsVisibility1.ts, 19, 45))
|
||||
>this : Symbol(Derived, Decl(divergentAccessorsVisibility1.ts, 59, 1))
|
||||
>PrivatePublic : Symbol(Base.PrivatePublic, Decl(divergentAccessorsVisibility1.ts, 17, 47), Decl(divergentAccessorsVisibility1.ts, 19, 45))
|
||||
|
||||
this.PrivateProtected = 0;
|
||||
>this.PrivateProtected : Symbol(Base.PrivateProtected, Decl(divergentAccessorsVisibility1.ts, 20, 36), Decl(divergentAccessorsVisibility1.ts, 22, 48))
|
||||
>this : Symbol(Derived, Decl(divergentAccessorsVisibility1.ts, 59, 1))
|
||||
>PrivateProtected : Symbol(Base.PrivateProtected, Decl(divergentAccessorsVisibility1.ts, 20, 36), Decl(divergentAccessorsVisibility1.ts, 22, 48))
|
||||
|
||||
this.PrivatePrivate = 0;
|
||||
>this.PrivatePrivate : Symbol(Base.PrivatePrivate, Decl(divergentAccessorsVisibility1.ts, 23, 49), Decl(divergentAccessorsVisibility1.ts, 25, 46))
|
||||
>this : Symbol(Derived, Decl(divergentAccessorsVisibility1.ts, 59, 1))
|
||||
>PrivatePrivate : Symbol(Base.PrivatePrivate, Decl(divergentAccessorsVisibility1.ts, 23, 49), Decl(divergentAccessorsVisibility1.ts, 25, 46))
|
||||
|
||||
void this.PublicPublic;
|
||||
>this.PublicPublic : Symbol(Base.PublicPublic, Decl(divergentAccessorsVisibility1.ts, 0, 12), Decl(divergentAccessorsVisibility1.ts, 1, 36))
|
||||
>this : Symbol(Derived, Decl(divergentAccessorsVisibility1.ts, 59, 1))
|
||||
>PublicPublic : Symbol(Base.PublicPublic, Decl(divergentAccessorsVisibility1.ts, 0, 12), Decl(divergentAccessorsVisibility1.ts, 1, 36))
|
||||
|
||||
void this.PublicProtected;
|
||||
>this.PublicProtected : Symbol(Base.PublicProtected, Decl(divergentAccessorsVisibility1.ts, 2, 35), Decl(divergentAccessorsVisibility1.ts, 4, 39))
|
||||
>this : Symbol(Derived, Decl(divergentAccessorsVisibility1.ts, 59, 1))
|
||||
>PublicProtected : Symbol(Base.PublicProtected, Decl(divergentAccessorsVisibility1.ts, 2, 35), Decl(divergentAccessorsVisibility1.ts, 4, 39))
|
||||
|
||||
void this.PublicPrivate;
|
||||
>this.PublicPrivate : Symbol(Base.PublicPrivate, Decl(divergentAccessorsVisibility1.ts, 5, 48), Decl(divergentAccessorsVisibility1.ts, 7, 37))
|
||||
>this : Symbol(Derived, Decl(divergentAccessorsVisibility1.ts, 59, 1))
|
||||
>PublicPrivate : Symbol(Base.PublicPrivate, Decl(divergentAccessorsVisibility1.ts, 5, 48), Decl(divergentAccessorsVisibility1.ts, 7, 37))
|
||||
|
||||
void this.ProtectedPublic;
|
||||
>this.ProtectedPublic : Symbol(Base.ProtectedPublic, Decl(divergentAccessorsVisibility1.ts, 8, 44), Decl(divergentAccessorsVisibility1.ts, 10, 49))
|
||||
>this : Symbol(Derived, Decl(divergentAccessorsVisibility1.ts, 59, 1))
|
||||
>ProtectedPublic : Symbol(Base.ProtectedPublic, Decl(divergentAccessorsVisibility1.ts, 8, 44), Decl(divergentAccessorsVisibility1.ts, 10, 49))
|
||||
|
||||
void this.ProtectedProtected;
|
||||
>this.ProtectedProtected : Symbol(Base.ProtectedProtected, Decl(divergentAccessorsVisibility1.ts, 11, 38), Decl(divergentAccessorsVisibility1.ts, 13, 52))
|
||||
>this : Symbol(Derived, Decl(divergentAccessorsVisibility1.ts, 59, 1))
|
||||
>ProtectedProtected : Symbol(Base.ProtectedProtected, Decl(divergentAccessorsVisibility1.ts, 11, 38), Decl(divergentAccessorsVisibility1.ts, 13, 52))
|
||||
|
||||
void this.ProtectedPrivate;
|
||||
>this.ProtectedPrivate : Symbol(Base.ProtectedPrivate, Decl(divergentAccessorsVisibility1.ts, 14, 51), Decl(divergentAccessorsVisibility1.ts, 16, 50))
|
||||
>this : Symbol(Derived, Decl(divergentAccessorsVisibility1.ts, 59, 1))
|
||||
>ProtectedPrivate : Symbol(Base.ProtectedPrivate, Decl(divergentAccessorsVisibility1.ts, 14, 51), Decl(divergentAccessorsVisibility1.ts, 16, 50))
|
||||
|
||||
void this.PrivatePublic;
|
||||
>this.PrivatePublic : Symbol(Base.PrivatePublic, Decl(divergentAccessorsVisibility1.ts, 17, 47), Decl(divergentAccessorsVisibility1.ts, 19, 45))
|
||||
>this : Symbol(Derived, Decl(divergentAccessorsVisibility1.ts, 59, 1))
|
||||
>PrivatePublic : Symbol(Base.PrivatePublic, Decl(divergentAccessorsVisibility1.ts, 17, 47), Decl(divergentAccessorsVisibility1.ts, 19, 45))
|
||||
|
||||
void this.PrivateProtected;
|
||||
>this.PrivateProtected : Symbol(Base.PrivateProtected, Decl(divergentAccessorsVisibility1.ts, 20, 36), Decl(divergentAccessorsVisibility1.ts, 22, 48))
|
||||
>this : Symbol(Derived, Decl(divergentAccessorsVisibility1.ts, 59, 1))
|
||||
>PrivateProtected : Symbol(Base.PrivateProtected, Decl(divergentAccessorsVisibility1.ts, 20, 36), Decl(divergentAccessorsVisibility1.ts, 22, 48))
|
||||
|
||||
void this.PrivatePrivate;
|
||||
>this.PrivatePrivate : Symbol(Base.PrivatePrivate, Decl(divergentAccessorsVisibility1.ts, 23, 49), Decl(divergentAccessorsVisibility1.ts, 25, 46))
|
||||
>this : Symbol(Derived, Decl(divergentAccessorsVisibility1.ts, 59, 1))
|
||||
>PrivatePrivate : Symbol(Base.PrivatePrivate, Decl(divergentAccessorsVisibility1.ts, 23, 49), Decl(divergentAccessorsVisibility1.ts, 25, 46))
|
||||
|
||||
this.PublicPublic += 0;
|
||||
>this.PublicPublic : Symbol(Base.PublicPublic, Decl(divergentAccessorsVisibility1.ts, 0, 12), Decl(divergentAccessorsVisibility1.ts, 1, 36))
|
||||
>this : Symbol(Derived, Decl(divergentAccessorsVisibility1.ts, 59, 1))
|
||||
>PublicPublic : Symbol(Base.PublicPublic, Decl(divergentAccessorsVisibility1.ts, 0, 12), Decl(divergentAccessorsVisibility1.ts, 1, 36))
|
||||
|
||||
this.PublicProtected += 0;
|
||||
>this.PublicProtected : Symbol(Base.PublicProtected, Decl(divergentAccessorsVisibility1.ts, 2, 35), Decl(divergentAccessorsVisibility1.ts, 4, 39))
|
||||
>this : Symbol(Derived, Decl(divergentAccessorsVisibility1.ts, 59, 1))
|
||||
>PublicProtected : Symbol(Base.PublicProtected, Decl(divergentAccessorsVisibility1.ts, 2, 35), Decl(divergentAccessorsVisibility1.ts, 4, 39))
|
||||
|
||||
this.PublicPrivate += 0;
|
||||
>this.PublicPrivate : Symbol(Base.PublicPrivate, Decl(divergentAccessorsVisibility1.ts, 5, 48), Decl(divergentAccessorsVisibility1.ts, 7, 37))
|
||||
>this : Symbol(Derived, Decl(divergentAccessorsVisibility1.ts, 59, 1))
|
||||
>PublicPrivate : Symbol(Base.PublicPrivate, Decl(divergentAccessorsVisibility1.ts, 5, 48), Decl(divergentAccessorsVisibility1.ts, 7, 37))
|
||||
|
||||
this.ProtectedPublic += 0;
|
||||
>this.ProtectedPublic : Symbol(Base.ProtectedPublic, Decl(divergentAccessorsVisibility1.ts, 8, 44), Decl(divergentAccessorsVisibility1.ts, 10, 49))
|
||||
>this : Symbol(Derived, Decl(divergentAccessorsVisibility1.ts, 59, 1))
|
||||
>ProtectedPublic : Symbol(Base.ProtectedPublic, Decl(divergentAccessorsVisibility1.ts, 8, 44), Decl(divergentAccessorsVisibility1.ts, 10, 49))
|
||||
|
||||
this.ProtectedProtected += 0;
|
||||
>this.ProtectedProtected : Symbol(Base.ProtectedProtected, Decl(divergentAccessorsVisibility1.ts, 11, 38), Decl(divergentAccessorsVisibility1.ts, 13, 52))
|
||||
>this : Symbol(Derived, Decl(divergentAccessorsVisibility1.ts, 59, 1))
|
||||
>ProtectedProtected : Symbol(Base.ProtectedProtected, Decl(divergentAccessorsVisibility1.ts, 11, 38), Decl(divergentAccessorsVisibility1.ts, 13, 52))
|
||||
|
||||
this.ProtectedPrivate += 0;
|
||||
>this.ProtectedPrivate : Symbol(Base.ProtectedPrivate, Decl(divergentAccessorsVisibility1.ts, 14, 51), Decl(divergentAccessorsVisibility1.ts, 16, 50))
|
||||
>this : Symbol(Derived, Decl(divergentAccessorsVisibility1.ts, 59, 1))
|
||||
>ProtectedPrivate : Symbol(Base.ProtectedPrivate, Decl(divergentAccessorsVisibility1.ts, 14, 51), Decl(divergentAccessorsVisibility1.ts, 16, 50))
|
||||
|
||||
this.PrivatePublic += 0;
|
||||
>this.PrivatePublic : Symbol(Base.PrivatePublic, Decl(divergentAccessorsVisibility1.ts, 17, 47), Decl(divergentAccessorsVisibility1.ts, 19, 45))
|
||||
>this : Symbol(Derived, Decl(divergentAccessorsVisibility1.ts, 59, 1))
|
||||
>PrivatePublic : Symbol(Base.PrivatePublic, Decl(divergentAccessorsVisibility1.ts, 17, 47), Decl(divergentAccessorsVisibility1.ts, 19, 45))
|
||||
|
||||
this.PrivateProtected += 0;
|
||||
>this.PrivateProtected : Symbol(Base.PrivateProtected, Decl(divergentAccessorsVisibility1.ts, 20, 36), Decl(divergentAccessorsVisibility1.ts, 22, 48))
|
||||
>this : Symbol(Derived, Decl(divergentAccessorsVisibility1.ts, 59, 1))
|
||||
>PrivateProtected : Symbol(Base.PrivateProtected, Decl(divergentAccessorsVisibility1.ts, 20, 36), Decl(divergentAccessorsVisibility1.ts, 22, 48))
|
||||
|
||||
this.PrivatePrivate += 0;
|
||||
>this.PrivatePrivate : Symbol(Base.PrivatePrivate, Decl(divergentAccessorsVisibility1.ts, 23, 49), Decl(divergentAccessorsVisibility1.ts, 25, 46))
|
||||
>this : Symbol(Derived, Decl(divergentAccessorsVisibility1.ts, 59, 1))
|
||||
>PrivatePrivate : Symbol(Base.PrivatePrivate, Decl(divergentAccessorsVisibility1.ts, 23, 49), Decl(divergentAccessorsVisibility1.ts, 25, 46))
|
||||
}
|
||||
}
|
||||
|
||||
declare const base: Base, deriv: Derived;
|
||||
>base : Symbol(base, Decl(divergentAccessorsVisibility1.ts, 95, 13))
|
||||
>Base : Symbol(Base, Decl(divergentAccessorsVisibility1.ts, 0, 0))
|
||||
>deriv : Symbol(deriv, Decl(divergentAccessorsVisibility1.ts, 95, 25))
|
||||
>Derived : Symbol(Derived, Decl(divergentAccessorsVisibility1.ts, 59, 1))
|
||||
|
||||
function fn() {
|
||||
>fn : Symbol(fn, Decl(divergentAccessorsVisibility1.ts, 95, 41))
|
||||
|
||||
base.PublicPublic = 0;
|
||||
>base.PublicPublic : Symbol(Base.PublicPublic, Decl(divergentAccessorsVisibility1.ts, 0, 12), Decl(divergentAccessorsVisibility1.ts, 1, 36))
|
||||
>base : Symbol(base, Decl(divergentAccessorsVisibility1.ts, 95, 13))
|
||||
>PublicPublic : Symbol(Base.PublicPublic, Decl(divergentAccessorsVisibility1.ts, 0, 12), Decl(divergentAccessorsVisibility1.ts, 1, 36))
|
||||
|
||||
base.PublicProtected = 0;
|
||||
>base.PublicProtected : Symbol(Base.PublicProtected, Decl(divergentAccessorsVisibility1.ts, 2, 35), Decl(divergentAccessorsVisibility1.ts, 4, 39))
|
||||
>base : Symbol(base, Decl(divergentAccessorsVisibility1.ts, 95, 13))
|
||||
>PublicProtected : Symbol(Base.PublicProtected, Decl(divergentAccessorsVisibility1.ts, 2, 35), Decl(divergentAccessorsVisibility1.ts, 4, 39))
|
||||
|
||||
base.PublicPrivate = 0;
|
||||
>base.PublicPrivate : Symbol(Base.PublicPrivate, Decl(divergentAccessorsVisibility1.ts, 5, 48), Decl(divergentAccessorsVisibility1.ts, 7, 37))
|
||||
>base : Symbol(base, Decl(divergentAccessorsVisibility1.ts, 95, 13))
|
||||
>PublicPrivate : Symbol(Base.PublicPrivate, Decl(divergentAccessorsVisibility1.ts, 5, 48), Decl(divergentAccessorsVisibility1.ts, 7, 37))
|
||||
|
||||
base.ProtectedPublic = 0;
|
||||
>base.ProtectedPublic : Symbol(Base.ProtectedPublic, Decl(divergentAccessorsVisibility1.ts, 8, 44), Decl(divergentAccessorsVisibility1.ts, 10, 49))
|
||||
>base : Symbol(base, Decl(divergentAccessorsVisibility1.ts, 95, 13))
|
||||
>ProtectedPublic : Symbol(Base.ProtectedPublic, Decl(divergentAccessorsVisibility1.ts, 8, 44), Decl(divergentAccessorsVisibility1.ts, 10, 49))
|
||||
|
||||
base.ProtectedProtected = 0;
|
||||
>base.ProtectedProtected : Symbol(Base.ProtectedProtected, Decl(divergentAccessorsVisibility1.ts, 11, 38), Decl(divergentAccessorsVisibility1.ts, 13, 52))
|
||||
>base : Symbol(base, Decl(divergentAccessorsVisibility1.ts, 95, 13))
|
||||
>ProtectedProtected : Symbol(Base.ProtectedProtected, Decl(divergentAccessorsVisibility1.ts, 11, 38), Decl(divergentAccessorsVisibility1.ts, 13, 52))
|
||||
|
||||
base.ProtectedPrivate = 0;
|
||||
>base.ProtectedPrivate : Symbol(Base.ProtectedPrivate, Decl(divergentAccessorsVisibility1.ts, 14, 51), Decl(divergentAccessorsVisibility1.ts, 16, 50))
|
||||
>base : Symbol(base, Decl(divergentAccessorsVisibility1.ts, 95, 13))
|
||||
>ProtectedPrivate : Symbol(Base.ProtectedPrivate, Decl(divergentAccessorsVisibility1.ts, 14, 51), Decl(divergentAccessorsVisibility1.ts, 16, 50))
|
||||
|
||||
base.PrivatePublic = 0;
|
||||
>base.PrivatePublic : Symbol(Base.PrivatePublic, Decl(divergentAccessorsVisibility1.ts, 17, 47), Decl(divergentAccessorsVisibility1.ts, 19, 45))
|
||||
>base : Symbol(base, Decl(divergentAccessorsVisibility1.ts, 95, 13))
|
||||
>PrivatePublic : Symbol(Base.PrivatePublic, Decl(divergentAccessorsVisibility1.ts, 17, 47), Decl(divergentAccessorsVisibility1.ts, 19, 45))
|
||||
|
||||
base.PrivateProtected = 0;
|
||||
>base.PrivateProtected : Symbol(Base.PrivateProtected, Decl(divergentAccessorsVisibility1.ts, 20, 36), Decl(divergentAccessorsVisibility1.ts, 22, 48))
|
||||
>base : Symbol(base, Decl(divergentAccessorsVisibility1.ts, 95, 13))
|
||||
>PrivateProtected : Symbol(Base.PrivateProtected, Decl(divergentAccessorsVisibility1.ts, 20, 36), Decl(divergentAccessorsVisibility1.ts, 22, 48))
|
||||
|
||||
base.PrivatePrivate = 0;
|
||||
>base.PrivatePrivate : Symbol(Base.PrivatePrivate, Decl(divergentAccessorsVisibility1.ts, 23, 49), Decl(divergentAccessorsVisibility1.ts, 25, 46))
|
||||
>base : Symbol(base, Decl(divergentAccessorsVisibility1.ts, 95, 13))
|
||||
>PrivatePrivate : Symbol(Base.PrivatePrivate, Decl(divergentAccessorsVisibility1.ts, 23, 49), Decl(divergentAccessorsVisibility1.ts, 25, 46))
|
||||
|
||||
void base.PublicPublic;
|
||||
>base.PublicPublic : Symbol(Base.PublicPublic, Decl(divergentAccessorsVisibility1.ts, 0, 12), Decl(divergentAccessorsVisibility1.ts, 1, 36))
|
||||
>base : Symbol(base, Decl(divergentAccessorsVisibility1.ts, 95, 13))
|
||||
>PublicPublic : Symbol(Base.PublicPublic, Decl(divergentAccessorsVisibility1.ts, 0, 12), Decl(divergentAccessorsVisibility1.ts, 1, 36))
|
||||
|
||||
void base.PublicProtected;
|
||||
>base.PublicProtected : Symbol(Base.PublicProtected, Decl(divergentAccessorsVisibility1.ts, 2, 35), Decl(divergentAccessorsVisibility1.ts, 4, 39))
|
||||
>base : Symbol(base, Decl(divergentAccessorsVisibility1.ts, 95, 13))
|
||||
>PublicProtected : Symbol(Base.PublicProtected, Decl(divergentAccessorsVisibility1.ts, 2, 35), Decl(divergentAccessorsVisibility1.ts, 4, 39))
|
||||
|
||||
void base.PublicPrivate;
|
||||
>base.PublicPrivate : Symbol(Base.PublicPrivate, Decl(divergentAccessorsVisibility1.ts, 5, 48), Decl(divergentAccessorsVisibility1.ts, 7, 37))
|
||||
>base : Symbol(base, Decl(divergentAccessorsVisibility1.ts, 95, 13))
|
||||
>PublicPrivate : Symbol(Base.PublicPrivate, Decl(divergentAccessorsVisibility1.ts, 5, 48), Decl(divergentAccessorsVisibility1.ts, 7, 37))
|
||||
|
||||
void base.ProtectedPublic;
|
||||
>base.ProtectedPublic : Symbol(Base.ProtectedPublic, Decl(divergentAccessorsVisibility1.ts, 8, 44), Decl(divergentAccessorsVisibility1.ts, 10, 49))
|
||||
>base : Symbol(base, Decl(divergentAccessorsVisibility1.ts, 95, 13))
|
||||
>ProtectedPublic : Symbol(Base.ProtectedPublic, Decl(divergentAccessorsVisibility1.ts, 8, 44), Decl(divergentAccessorsVisibility1.ts, 10, 49))
|
||||
|
||||
void base.ProtectedProtected;
|
||||
>base.ProtectedProtected : Symbol(Base.ProtectedProtected, Decl(divergentAccessorsVisibility1.ts, 11, 38), Decl(divergentAccessorsVisibility1.ts, 13, 52))
|
||||
>base : Symbol(base, Decl(divergentAccessorsVisibility1.ts, 95, 13))
|
||||
>ProtectedProtected : Symbol(Base.ProtectedProtected, Decl(divergentAccessorsVisibility1.ts, 11, 38), Decl(divergentAccessorsVisibility1.ts, 13, 52))
|
||||
|
||||
void base.ProtectedPrivate;
|
||||
>base.ProtectedPrivate : Symbol(Base.ProtectedPrivate, Decl(divergentAccessorsVisibility1.ts, 14, 51), Decl(divergentAccessorsVisibility1.ts, 16, 50))
|
||||
>base : Symbol(base, Decl(divergentAccessorsVisibility1.ts, 95, 13))
|
||||
>ProtectedPrivate : Symbol(Base.ProtectedPrivate, Decl(divergentAccessorsVisibility1.ts, 14, 51), Decl(divergentAccessorsVisibility1.ts, 16, 50))
|
||||
|
||||
void base.PrivatePublic;
|
||||
>base.PrivatePublic : Symbol(Base.PrivatePublic, Decl(divergentAccessorsVisibility1.ts, 17, 47), Decl(divergentAccessorsVisibility1.ts, 19, 45))
|
||||
>base : Symbol(base, Decl(divergentAccessorsVisibility1.ts, 95, 13))
|
||||
>PrivatePublic : Symbol(Base.PrivatePublic, Decl(divergentAccessorsVisibility1.ts, 17, 47), Decl(divergentAccessorsVisibility1.ts, 19, 45))
|
||||
|
||||
void base.PrivateProtected;
|
||||
>base.PrivateProtected : Symbol(Base.PrivateProtected, Decl(divergentAccessorsVisibility1.ts, 20, 36), Decl(divergentAccessorsVisibility1.ts, 22, 48))
|
||||
>base : Symbol(base, Decl(divergentAccessorsVisibility1.ts, 95, 13))
|
||||
>PrivateProtected : Symbol(Base.PrivateProtected, Decl(divergentAccessorsVisibility1.ts, 20, 36), Decl(divergentAccessorsVisibility1.ts, 22, 48))
|
||||
|
||||
void base.PrivatePrivate;
|
||||
>base.PrivatePrivate : Symbol(Base.PrivatePrivate, Decl(divergentAccessorsVisibility1.ts, 23, 49), Decl(divergentAccessorsVisibility1.ts, 25, 46))
|
||||
>base : Symbol(base, Decl(divergentAccessorsVisibility1.ts, 95, 13))
|
||||
>PrivatePrivate : Symbol(Base.PrivatePrivate, Decl(divergentAccessorsVisibility1.ts, 23, 49), Decl(divergentAccessorsVisibility1.ts, 25, 46))
|
||||
|
||||
base.PublicPublic += 0;
|
||||
>base.PublicPublic : Symbol(Base.PublicPublic, Decl(divergentAccessorsVisibility1.ts, 0, 12), Decl(divergentAccessorsVisibility1.ts, 1, 36))
|
||||
>base : Symbol(base, Decl(divergentAccessorsVisibility1.ts, 95, 13))
|
||||
>PublicPublic : Symbol(Base.PublicPublic, Decl(divergentAccessorsVisibility1.ts, 0, 12), Decl(divergentAccessorsVisibility1.ts, 1, 36))
|
||||
|
||||
base.PublicProtected += 0;
|
||||
>base.PublicProtected : Symbol(Base.PublicProtected, Decl(divergentAccessorsVisibility1.ts, 2, 35), Decl(divergentAccessorsVisibility1.ts, 4, 39))
|
||||
>base : Symbol(base, Decl(divergentAccessorsVisibility1.ts, 95, 13))
|
||||
>PublicProtected : Symbol(Base.PublicProtected, Decl(divergentAccessorsVisibility1.ts, 2, 35), Decl(divergentAccessorsVisibility1.ts, 4, 39))
|
||||
|
||||
base.PublicPrivate += 0;
|
||||
>base.PublicPrivate : Symbol(Base.PublicPrivate, Decl(divergentAccessorsVisibility1.ts, 5, 48), Decl(divergentAccessorsVisibility1.ts, 7, 37))
|
||||
>base : Symbol(base, Decl(divergentAccessorsVisibility1.ts, 95, 13))
|
||||
>PublicPrivate : Symbol(Base.PublicPrivate, Decl(divergentAccessorsVisibility1.ts, 5, 48), Decl(divergentAccessorsVisibility1.ts, 7, 37))
|
||||
|
||||
base.ProtectedPublic += 0;
|
||||
>base.ProtectedPublic : Symbol(Base.ProtectedPublic, Decl(divergentAccessorsVisibility1.ts, 8, 44), Decl(divergentAccessorsVisibility1.ts, 10, 49))
|
||||
>base : Symbol(base, Decl(divergentAccessorsVisibility1.ts, 95, 13))
|
||||
>ProtectedPublic : Symbol(Base.ProtectedPublic, Decl(divergentAccessorsVisibility1.ts, 8, 44), Decl(divergentAccessorsVisibility1.ts, 10, 49))
|
||||
|
||||
base.ProtectedProtected += 0;
|
||||
>base.ProtectedProtected : Symbol(Base.ProtectedProtected, Decl(divergentAccessorsVisibility1.ts, 11, 38), Decl(divergentAccessorsVisibility1.ts, 13, 52))
|
||||
>base : Symbol(base, Decl(divergentAccessorsVisibility1.ts, 95, 13))
|
||||
>ProtectedProtected : Symbol(Base.ProtectedProtected, Decl(divergentAccessorsVisibility1.ts, 11, 38), Decl(divergentAccessorsVisibility1.ts, 13, 52))
|
||||
|
||||
base.ProtectedPrivate += 0;
|
||||
>base.ProtectedPrivate : Symbol(Base.ProtectedPrivate, Decl(divergentAccessorsVisibility1.ts, 14, 51), Decl(divergentAccessorsVisibility1.ts, 16, 50))
|
||||
>base : Symbol(base, Decl(divergentAccessorsVisibility1.ts, 95, 13))
|
||||
>ProtectedPrivate : Symbol(Base.ProtectedPrivate, Decl(divergentAccessorsVisibility1.ts, 14, 51), Decl(divergentAccessorsVisibility1.ts, 16, 50))
|
||||
|
||||
base.PrivatePublic += 0;
|
||||
>base.PrivatePublic : Symbol(Base.PrivatePublic, Decl(divergentAccessorsVisibility1.ts, 17, 47), Decl(divergentAccessorsVisibility1.ts, 19, 45))
|
||||
>base : Symbol(base, Decl(divergentAccessorsVisibility1.ts, 95, 13))
|
||||
>PrivatePublic : Symbol(Base.PrivatePublic, Decl(divergentAccessorsVisibility1.ts, 17, 47), Decl(divergentAccessorsVisibility1.ts, 19, 45))
|
||||
|
||||
base.PrivateProtected += 0;
|
||||
>base.PrivateProtected : Symbol(Base.PrivateProtected, Decl(divergentAccessorsVisibility1.ts, 20, 36), Decl(divergentAccessorsVisibility1.ts, 22, 48))
|
||||
>base : Symbol(base, Decl(divergentAccessorsVisibility1.ts, 95, 13))
|
||||
>PrivateProtected : Symbol(Base.PrivateProtected, Decl(divergentAccessorsVisibility1.ts, 20, 36), Decl(divergentAccessorsVisibility1.ts, 22, 48))
|
||||
|
||||
base.PrivatePrivate += 0;
|
||||
>base.PrivatePrivate : Symbol(Base.PrivatePrivate, Decl(divergentAccessorsVisibility1.ts, 23, 49), Decl(divergentAccessorsVisibility1.ts, 25, 46))
|
||||
>base : Symbol(base, Decl(divergentAccessorsVisibility1.ts, 95, 13))
|
||||
>PrivatePrivate : Symbol(Base.PrivatePrivate, Decl(divergentAccessorsVisibility1.ts, 23, 49), Decl(divergentAccessorsVisibility1.ts, 25, 46))
|
||||
|
||||
deriv.PublicPublic = 0;
|
||||
>deriv.PublicPublic : Symbol(Base.PublicPublic, Decl(divergentAccessorsVisibility1.ts, 0, 12), Decl(divergentAccessorsVisibility1.ts, 1, 36))
|
||||
>deriv : Symbol(deriv, Decl(divergentAccessorsVisibility1.ts, 95, 25))
|
||||
>PublicPublic : Symbol(Base.PublicPublic, Decl(divergentAccessorsVisibility1.ts, 0, 12), Decl(divergentAccessorsVisibility1.ts, 1, 36))
|
||||
|
||||
deriv.PublicProtected = 0;
|
||||
>deriv.PublicProtected : Symbol(Base.PublicProtected, Decl(divergentAccessorsVisibility1.ts, 2, 35), Decl(divergentAccessorsVisibility1.ts, 4, 39))
|
||||
>deriv : Symbol(deriv, Decl(divergentAccessorsVisibility1.ts, 95, 25))
|
||||
>PublicProtected : Symbol(Base.PublicProtected, Decl(divergentAccessorsVisibility1.ts, 2, 35), Decl(divergentAccessorsVisibility1.ts, 4, 39))
|
||||
|
||||
deriv.PublicPrivate = 0;
|
||||
>deriv.PublicPrivate : Symbol(Base.PublicPrivate, Decl(divergentAccessorsVisibility1.ts, 5, 48), Decl(divergentAccessorsVisibility1.ts, 7, 37))
|
||||
>deriv : Symbol(deriv, Decl(divergentAccessorsVisibility1.ts, 95, 25))
|
||||
>PublicPrivate : Symbol(Base.PublicPrivate, Decl(divergentAccessorsVisibility1.ts, 5, 48), Decl(divergentAccessorsVisibility1.ts, 7, 37))
|
||||
|
||||
deriv.ProtectedPublic = 0;
|
||||
>deriv.ProtectedPublic : Symbol(Base.ProtectedPublic, Decl(divergentAccessorsVisibility1.ts, 8, 44), Decl(divergentAccessorsVisibility1.ts, 10, 49))
|
||||
>deriv : Symbol(deriv, Decl(divergentAccessorsVisibility1.ts, 95, 25))
|
||||
>ProtectedPublic : Symbol(Base.ProtectedPublic, Decl(divergentAccessorsVisibility1.ts, 8, 44), Decl(divergentAccessorsVisibility1.ts, 10, 49))
|
||||
|
||||
deriv.ProtectedProtected = 0;
|
||||
>deriv.ProtectedProtected : Symbol(Base.ProtectedProtected, Decl(divergentAccessorsVisibility1.ts, 11, 38), Decl(divergentAccessorsVisibility1.ts, 13, 52))
|
||||
>deriv : Symbol(deriv, Decl(divergentAccessorsVisibility1.ts, 95, 25))
|
||||
>ProtectedProtected : Symbol(Base.ProtectedProtected, Decl(divergentAccessorsVisibility1.ts, 11, 38), Decl(divergentAccessorsVisibility1.ts, 13, 52))
|
||||
|
||||
deriv.ProtectedPrivate = 0;
|
||||
>deriv.ProtectedPrivate : Symbol(Base.ProtectedPrivate, Decl(divergentAccessorsVisibility1.ts, 14, 51), Decl(divergentAccessorsVisibility1.ts, 16, 50))
|
||||
>deriv : Symbol(deriv, Decl(divergentAccessorsVisibility1.ts, 95, 25))
|
||||
>ProtectedPrivate : Symbol(Base.ProtectedPrivate, Decl(divergentAccessorsVisibility1.ts, 14, 51), Decl(divergentAccessorsVisibility1.ts, 16, 50))
|
||||
|
||||
deriv.PrivatePublic = 0;
|
||||
>deriv.PrivatePublic : Symbol(Base.PrivatePublic, Decl(divergentAccessorsVisibility1.ts, 17, 47), Decl(divergentAccessorsVisibility1.ts, 19, 45))
|
||||
>deriv : Symbol(deriv, Decl(divergentAccessorsVisibility1.ts, 95, 25))
|
||||
>PrivatePublic : Symbol(Base.PrivatePublic, Decl(divergentAccessorsVisibility1.ts, 17, 47), Decl(divergentAccessorsVisibility1.ts, 19, 45))
|
||||
|
||||
deriv.PrivateProtected = 0;
|
||||
>deriv.PrivateProtected : Symbol(Base.PrivateProtected, Decl(divergentAccessorsVisibility1.ts, 20, 36), Decl(divergentAccessorsVisibility1.ts, 22, 48))
|
||||
>deriv : Symbol(deriv, Decl(divergentAccessorsVisibility1.ts, 95, 25))
|
||||
>PrivateProtected : Symbol(Base.PrivateProtected, Decl(divergentAccessorsVisibility1.ts, 20, 36), Decl(divergentAccessorsVisibility1.ts, 22, 48))
|
||||
|
||||
deriv.PrivatePrivate = 0;
|
||||
>deriv.PrivatePrivate : Symbol(Base.PrivatePrivate, Decl(divergentAccessorsVisibility1.ts, 23, 49), Decl(divergentAccessorsVisibility1.ts, 25, 46))
|
||||
>deriv : Symbol(deriv, Decl(divergentAccessorsVisibility1.ts, 95, 25))
|
||||
>PrivatePrivate : Symbol(Base.PrivatePrivate, Decl(divergentAccessorsVisibility1.ts, 23, 49), Decl(divergentAccessorsVisibility1.ts, 25, 46))
|
||||
|
||||
void deriv.PublicPublic;
|
||||
>deriv.PublicPublic : Symbol(Base.PublicPublic, Decl(divergentAccessorsVisibility1.ts, 0, 12), Decl(divergentAccessorsVisibility1.ts, 1, 36))
|
||||
>deriv : Symbol(deriv, Decl(divergentAccessorsVisibility1.ts, 95, 25))
|
||||
>PublicPublic : Symbol(Base.PublicPublic, Decl(divergentAccessorsVisibility1.ts, 0, 12), Decl(divergentAccessorsVisibility1.ts, 1, 36))
|
||||
|
||||
void deriv.PublicProtected;
|
||||
>deriv.PublicProtected : Symbol(Base.PublicProtected, Decl(divergentAccessorsVisibility1.ts, 2, 35), Decl(divergentAccessorsVisibility1.ts, 4, 39))
|
||||
>deriv : Symbol(deriv, Decl(divergentAccessorsVisibility1.ts, 95, 25))
|
||||
>PublicProtected : Symbol(Base.PublicProtected, Decl(divergentAccessorsVisibility1.ts, 2, 35), Decl(divergentAccessorsVisibility1.ts, 4, 39))
|
||||
|
||||
void deriv.PublicPrivate;
|
||||
>deriv.PublicPrivate : Symbol(Base.PublicPrivate, Decl(divergentAccessorsVisibility1.ts, 5, 48), Decl(divergentAccessorsVisibility1.ts, 7, 37))
|
||||
>deriv : Symbol(deriv, Decl(divergentAccessorsVisibility1.ts, 95, 25))
|
||||
>PublicPrivate : Symbol(Base.PublicPrivate, Decl(divergentAccessorsVisibility1.ts, 5, 48), Decl(divergentAccessorsVisibility1.ts, 7, 37))
|
||||
|
||||
void deriv.ProtectedPublic;
|
||||
>deriv.ProtectedPublic : Symbol(Base.ProtectedPublic, Decl(divergentAccessorsVisibility1.ts, 8, 44), Decl(divergentAccessorsVisibility1.ts, 10, 49))
|
||||
>deriv : Symbol(deriv, Decl(divergentAccessorsVisibility1.ts, 95, 25))
|
||||
>ProtectedPublic : Symbol(Base.ProtectedPublic, Decl(divergentAccessorsVisibility1.ts, 8, 44), Decl(divergentAccessorsVisibility1.ts, 10, 49))
|
||||
|
||||
void deriv.ProtectedProtected;
|
||||
>deriv.ProtectedProtected : Symbol(Base.ProtectedProtected, Decl(divergentAccessorsVisibility1.ts, 11, 38), Decl(divergentAccessorsVisibility1.ts, 13, 52))
|
||||
>deriv : Symbol(deriv, Decl(divergentAccessorsVisibility1.ts, 95, 25))
|
||||
>ProtectedProtected : Symbol(Base.ProtectedProtected, Decl(divergentAccessorsVisibility1.ts, 11, 38), Decl(divergentAccessorsVisibility1.ts, 13, 52))
|
||||
|
||||
void deriv.ProtectedPrivate;
|
||||
>deriv.ProtectedPrivate : Symbol(Base.ProtectedPrivate, Decl(divergentAccessorsVisibility1.ts, 14, 51), Decl(divergentAccessorsVisibility1.ts, 16, 50))
|
||||
>deriv : Symbol(deriv, Decl(divergentAccessorsVisibility1.ts, 95, 25))
|
||||
>ProtectedPrivate : Symbol(Base.ProtectedPrivate, Decl(divergentAccessorsVisibility1.ts, 14, 51), Decl(divergentAccessorsVisibility1.ts, 16, 50))
|
||||
|
||||
void deriv.PrivatePublic;
|
||||
>deriv.PrivatePublic : Symbol(Base.PrivatePublic, Decl(divergentAccessorsVisibility1.ts, 17, 47), Decl(divergentAccessorsVisibility1.ts, 19, 45))
|
||||
>deriv : Symbol(deriv, Decl(divergentAccessorsVisibility1.ts, 95, 25))
|
||||
>PrivatePublic : Symbol(Base.PrivatePublic, Decl(divergentAccessorsVisibility1.ts, 17, 47), Decl(divergentAccessorsVisibility1.ts, 19, 45))
|
||||
|
||||
void deriv.PrivateProtected;
|
||||
>deriv.PrivateProtected : Symbol(Base.PrivateProtected, Decl(divergentAccessorsVisibility1.ts, 20, 36), Decl(divergentAccessorsVisibility1.ts, 22, 48))
|
||||
>deriv : Symbol(deriv, Decl(divergentAccessorsVisibility1.ts, 95, 25))
|
||||
>PrivateProtected : Symbol(Base.PrivateProtected, Decl(divergentAccessorsVisibility1.ts, 20, 36), Decl(divergentAccessorsVisibility1.ts, 22, 48))
|
||||
|
||||
void deriv.PrivatePrivate;
|
||||
>deriv.PrivatePrivate : Symbol(Base.PrivatePrivate, Decl(divergentAccessorsVisibility1.ts, 23, 49), Decl(divergentAccessorsVisibility1.ts, 25, 46))
|
||||
>deriv : Symbol(deriv, Decl(divergentAccessorsVisibility1.ts, 95, 25))
|
||||
>PrivatePrivate : Symbol(Base.PrivatePrivate, Decl(divergentAccessorsVisibility1.ts, 23, 49), Decl(divergentAccessorsVisibility1.ts, 25, 46))
|
||||
|
||||
deriv.PublicPublic += 0;
|
||||
>deriv.PublicPublic : Symbol(Base.PublicPublic, Decl(divergentAccessorsVisibility1.ts, 0, 12), Decl(divergentAccessorsVisibility1.ts, 1, 36))
|
||||
>deriv : Symbol(deriv, Decl(divergentAccessorsVisibility1.ts, 95, 25))
|
||||
>PublicPublic : Symbol(Base.PublicPublic, Decl(divergentAccessorsVisibility1.ts, 0, 12), Decl(divergentAccessorsVisibility1.ts, 1, 36))
|
||||
|
||||
deriv.PublicProtected += 0;
|
||||
>deriv.PublicProtected : Symbol(Base.PublicProtected, Decl(divergentAccessorsVisibility1.ts, 2, 35), Decl(divergentAccessorsVisibility1.ts, 4, 39))
|
||||
>deriv : Symbol(deriv, Decl(divergentAccessorsVisibility1.ts, 95, 25))
|
||||
>PublicProtected : Symbol(Base.PublicProtected, Decl(divergentAccessorsVisibility1.ts, 2, 35), Decl(divergentAccessorsVisibility1.ts, 4, 39))
|
||||
|
||||
deriv.PublicPrivate += 0;
|
||||
>deriv.PublicPrivate : Symbol(Base.PublicPrivate, Decl(divergentAccessorsVisibility1.ts, 5, 48), Decl(divergentAccessorsVisibility1.ts, 7, 37))
|
||||
>deriv : Symbol(deriv, Decl(divergentAccessorsVisibility1.ts, 95, 25))
|
||||
>PublicPrivate : Symbol(Base.PublicPrivate, Decl(divergentAccessorsVisibility1.ts, 5, 48), Decl(divergentAccessorsVisibility1.ts, 7, 37))
|
||||
|
||||
deriv.ProtectedPublic += 0;
|
||||
>deriv.ProtectedPublic : Symbol(Base.ProtectedPublic, Decl(divergentAccessorsVisibility1.ts, 8, 44), Decl(divergentAccessorsVisibility1.ts, 10, 49))
|
||||
>deriv : Symbol(deriv, Decl(divergentAccessorsVisibility1.ts, 95, 25))
|
||||
>ProtectedPublic : Symbol(Base.ProtectedPublic, Decl(divergentAccessorsVisibility1.ts, 8, 44), Decl(divergentAccessorsVisibility1.ts, 10, 49))
|
||||
|
||||
deriv.ProtectedProtected += 0;
|
||||
>deriv.ProtectedProtected : Symbol(Base.ProtectedProtected, Decl(divergentAccessorsVisibility1.ts, 11, 38), Decl(divergentAccessorsVisibility1.ts, 13, 52))
|
||||
>deriv : Symbol(deriv, Decl(divergentAccessorsVisibility1.ts, 95, 25))
|
||||
>ProtectedProtected : Symbol(Base.ProtectedProtected, Decl(divergentAccessorsVisibility1.ts, 11, 38), Decl(divergentAccessorsVisibility1.ts, 13, 52))
|
||||
|
||||
deriv.ProtectedPrivate += 0;
|
||||
>deriv.ProtectedPrivate : Symbol(Base.ProtectedPrivate, Decl(divergentAccessorsVisibility1.ts, 14, 51), Decl(divergentAccessorsVisibility1.ts, 16, 50))
|
||||
>deriv : Symbol(deriv, Decl(divergentAccessorsVisibility1.ts, 95, 25))
|
||||
>ProtectedPrivate : Symbol(Base.ProtectedPrivate, Decl(divergentAccessorsVisibility1.ts, 14, 51), Decl(divergentAccessorsVisibility1.ts, 16, 50))
|
||||
|
||||
deriv.PrivatePublic += 0;
|
||||
>deriv.PrivatePublic : Symbol(Base.PrivatePublic, Decl(divergentAccessorsVisibility1.ts, 17, 47), Decl(divergentAccessorsVisibility1.ts, 19, 45))
|
||||
>deriv : Symbol(deriv, Decl(divergentAccessorsVisibility1.ts, 95, 25))
|
||||
>PrivatePublic : Symbol(Base.PrivatePublic, Decl(divergentAccessorsVisibility1.ts, 17, 47), Decl(divergentAccessorsVisibility1.ts, 19, 45))
|
||||
|
||||
deriv.PrivateProtected += 0;
|
||||
>deriv.PrivateProtected : Symbol(Base.PrivateProtected, Decl(divergentAccessorsVisibility1.ts, 20, 36), Decl(divergentAccessorsVisibility1.ts, 22, 48))
|
||||
>deriv : Symbol(deriv, Decl(divergentAccessorsVisibility1.ts, 95, 25))
|
||||
>PrivateProtected : Symbol(Base.PrivateProtected, Decl(divergentAccessorsVisibility1.ts, 20, 36), Decl(divergentAccessorsVisibility1.ts, 22, 48))
|
||||
|
||||
deriv.PrivatePrivate += 0;
|
||||
>deriv.PrivatePrivate : Symbol(Base.PrivatePrivate, Decl(divergentAccessorsVisibility1.ts, 23, 49), Decl(divergentAccessorsVisibility1.ts, 25, 46))
|
||||
>deriv : Symbol(deriv, Decl(divergentAccessorsVisibility1.ts, 95, 25))
|
||||
>PrivatePrivate : Symbol(Base.PrivatePrivate, Decl(divergentAccessorsVisibility1.ts, 23, 49), Decl(divergentAccessorsVisibility1.ts, 25, 46))
|
||||
}
|
||||
|
||||
@@ -0,0 +1,818 @@
|
||||
=== tests/cases/compiler/divergentAccessorsVisibility1.ts ===
|
||||
class Base {
|
||||
>Base : Base
|
||||
|
||||
get PublicPublic() { return 0; }
|
||||
>PublicPublic : number
|
||||
>0 : 0
|
||||
|
||||
set PublicPublic(v) { return; }
|
||||
>PublicPublic : number
|
||||
>v : number
|
||||
|
||||
get PublicProtected() { return 0; }
|
||||
>PublicProtected : number
|
||||
>0 : 0
|
||||
|
||||
protected set PublicProtected(v) { return; }
|
||||
>PublicProtected : number
|
||||
>v : number
|
||||
|
||||
get PublicPrivate() { return 0; }
|
||||
>PublicPrivate : number
|
||||
>0 : 0
|
||||
|
||||
private set PublicPrivate(v) { return; }
|
||||
>PublicPrivate : number
|
||||
>v : number
|
||||
|
||||
protected get ProtectedPublic() { return 0; }
|
||||
>ProtectedPublic : number
|
||||
>0 : 0
|
||||
|
||||
set ProtectedPublic(v) { return; }
|
||||
>ProtectedPublic : number
|
||||
>v : number
|
||||
|
||||
protected get ProtectedProtected() { return 0; }
|
||||
>ProtectedProtected : number
|
||||
>0 : 0
|
||||
|
||||
protected set ProtectedProtected(v) { return; }
|
||||
>ProtectedProtected : number
|
||||
>v : number
|
||||
|
||||
protected get ProtectedPrivate() { return 0; }
|
||||
>ProtectedPrivate : number
|
||||
>0 : 0
|
||||
|
||||
private set ProtectedPrivate(v) { return; }
|
||||
>ProtectedPrivate : number
|
||||
>v : number
|
||||
|
||||
private get PrivatePublic() { return 0; }
|
||||
>PrivatePublic : number
|
||||
>0 : 0
|
||||
|
||||
set PrivatePublic(v) { return; }
|
||||
>PrivatePublic : number
|
||||
>v : number
|
||||
|
||||
private get PrivateProtected() { return 0; }
|
||||
>PrivateProtected : number
|
||||
>0 : 0
|
||||
|
||||
protected set PrivateProtected(v) { return; }
|
||||
>PrivateProtected : number
|
||||
>v : number
|
||||
|
||||
private get PrivatePrivate() { return 0; }
|
||||
>PrivatePrivate : number
|
||||
>0 : 0
|
||||
|
||||
private set PrivatePrivate(v) { return; }
|
||||
>PrivatePrivate : number
|
||||
>v : number
|
||||
|
||||
test() {
|
||||
>test : () => void
|
||||
|
||||
this.PublicPublic = 0;
|
||||
>this.PublicPublic = 0 : 0
|
||||
>this.PublicPublic : number
|
||||
>this : this
|
||||
>PublicPublic : number
|
||||
>0 : 0
|
||||
|
||||
this.PublicProtected = 0;
|
||||
>this.PublicProtected = 0 : 0
|
||||
>this.PublicProtected : number
|
||||
>this : this
|
||||
>PublicProtected : number
|
||||
>0 : 0
|
||||
|
||||
this.PublicPrivate = 0;
|
||||
>this.PublicPrivate = 0 : 0
|
||||
>this.PublicPrivate : number
|
||||
>this : this
|
||||
>PublicPrivate : number
|
||||
>0 : 0
|
||||
|
||||
this.ProtectedPublic = 0;
|
||||
>this.ProtectedPublic = 0 : 0
|
||||
>this.ProtectedPublic : number
|
||||
>this : this
|
||||
>ProtectedPublic : number
|
||||
>0 : 0
|
||||
|
||||
this.ProtectedProtected = 0;
|
||||
>this.ProtectedProtected = 0 : 0
|
||||
>this.ProtectedProtected : number
|
||||
>this : this
|
||||
>ProtectedProtected : number
|
||||
>0 : 0
|
||||
|
||||
this.ProtectedPrivate = 0;
|
||||
>this.ProtectedPrivate = 0 : 0
|
||||
>this.ProtectedPrivate : number
|
||||
>this : this
|
||||
>ProtectedPrivate : number
|
||||
>0 : 0
|
||||
|
||||
this.PrivatePublic = 0;
|
||||
>this.PrivatePublic = 0 : 0
|
||||
>this.PrivatePublic : number
|
||||
>this : this
|
||||
>PrivatePublic : number
|
||||
>0 : 0
|
||||
|
||||
this.PrivateProtected = 0;
|
||||
>this.PrivateProtected = 0 : 0
|
||||
>this.PrivateProtected : number
|
||||
>this : this
|
||||
>PrivateProtected : number
|
||||
>0 : 0
|
||||
|
||||
this.PrivatePrivate = 0;
|
||||
>this.PrivatePrivate = 0 : 0
|
||||
>this.PrivatePrivate : number
|
||||
>this : this
|
||||
>PrivatePrivate : number
|
||||
>0 : 0
|
||||
|
||||
void this.PublicPublic;
|
||||
>void this.PublicPublic : undefined
|
||||
>this.PublicPublic : number
|
||||
>this : this
|
||||
>PublicPublic : number
|
||||
|
||||
void this.PublicProtected;
|
||||
>void this.PublicProtected : undefined
|
||||
>this.PublicProtected : number
|
||||
>this : this
|
||||
>PublicProtected : number
|
||||
|
||||
void this.PublicPrivate;
|
||||
>void this.PublicPrivate : undefined
|
||||
>this.PublicPrivate : number
|
||||
>this : this
|
||||
>PublicPrivate : number
|
||||
|
||||
void this.ProtectedPublic;
|
||||
>void this.ProtectedPublic : undefined
|
||||
>this.ProtectedPublic : number
|
||||
>this : this
|
||||
>ProtectedPublic : number
|
||||
|
||||
void this.ProtectedProtected;
|
||||
>void this.ProtectedProtected : undefined
|
||||
>this.ProtectedProtected : number
|
||||
>this : this
|
||||
>ProtectedProtected : number
|
||||
|
||||
void this.ProtectedPrivate;
|
||||
>void this.ProtectedPrivate : undefined
|
||||
>this.ProtectedPrivate : number
|
||||
>this : this
|
||||
>ProtectedPrivate : number
|
||||
|
||||
void this.PrivatePublic;
|
||||
>void this.PrivatePublic : undefined
|
||||
>this.PrivatePublic : number
|
||||
>this : this
|
||||
>PrivatePublic : number
|
||||
|
||||
void this.PrivateProtected;
|
||||
>void this.PrivateProtected : undefined
|
||||
>this.PrivateProtected : number
|
||||
>this : this
|
||||
>PrivateProtected : number
|
||||
|
||||
void this.PrivatePrivate;
|
||||
>void this.PrivatePrivate : undefined
|
||||
>this.PrivatePrivate : number
|
||||
>this : this
|
||||
>PrivatePrivate : number
|
||||
|
||||
this.PublicPublic += 0;
|
||||
>this.PublicPublic += 0 : number
|
||||
>this.PublicPublic : number
|
||||
>this : this
|
||||
>PublicPublic : number
|
||||
>0 : 0
|
||||
|
||||
this.PublicProtected += 0;
|
||||
>this.PublicProtected += 0 : number
|
||||
>this.PublicProtected : number
|
||||
>this : this
|
||||
>PublicProtected : number
|
||||
>0 : 0
|
||||
|
||||
this.PublicPrivate += 0;
|
||||
>this.PublicPrivate += 0 : number
|
||||
>this.PublicPrivate : number
|
||||
>this : this
|
||||
>PublicPrivate : number
|
||||
>0 : 0
|
||||
|
||||
this.ProtectedPublic += 0;
|
||||
>this.ProtectedPublic += 0 : number
|
||||
>this.ProtectedPublic : number
|
||||
>this : this
|
||||
>ProtectedPublic : number
|
||||
>0 : 0
|
||||
|
||||
this.ProtectedProtected += 0;
|
||||
>this.ProtectedProtected += 0 : number
|
||||
>this.ProtectedProtected : number
|
||||
>this : this
|
||||
>ProtectedProtected : number
|
||||
>0 : 0
|
||||
|
||||
this.ProtectedPrivate += 0;
|
||||
>this.ProtectedPrivate += 0 : number
|
||||
>this.ProtectedPrivate : number
|
||||
>this : this
|
||||
>ProtectedPrivate : number
|
||||
>0 : 0
|
||||
|
||||
this.PrivatePublic += 0;
|
||||
>this.PrivatePublic += 0 : number
|
||||
>this.PrivatePublic : number
|
||||
>this : this
|
||||
>PrivatePublic : number
|
||||
>0 : 0
|
||||
|
||||
this.PrivateProtected += 0;
|
||||
>this.PrivateProtected += 0 : number
|
||||
>this.PrivateProtected : number
|
||||
>this : this
|
||||
>PrivateProtected : number
|
||||
>0 : 0
|
||||
|
||||
this.PrivatePrivate += 0;
|
||||
>this.PrivatePrivate += 0 : number
|
||||
>this.PrivatePrivate : number
|
||||
>this : this
|
||||
>PrivatePrivate : number
|
||||
>0 : 0
|
||||
}
|
||||
}
|
||||
|
||||
class Derived extends Base {
|
||||
>Derived : Derived
|
||||
>Base : Base
|
||||
|
||||
test2() {
|
||||
>test2 : () => void
|
||||
|
||||
this.PublicPublic = 0;
|
||||
>this.PublicPublic = 0 : 0
|
||||
>this.PublicPublic : number
|
||||
>this : this
|
||||
>PublicPublic : number
|
||||
>0 : 0
|
||||
|
||||
this.PublicProtected = 0;
|
||||
>this.PublicProtected = 0 : 0
|
||||
>this.PublicProtected : number
|
||||
>this : this
|
||||
>PublicProtected : number
|
||||
>0 : 0
|
||||
|
||||
this.PublicPrivate = 0;
|
||||
>this.PublicPrivate = 0 : 0
|
||||
>this.PublicPrivate : number
|
||||
>this : this
|
||||
>PublicPrivate : number
|
||||
>0 : 0
|
||||
|
||||
this.ProtectedPublic = 0;
|
||||
>this.ProtectedPublic = 0 : 0
|
||||
>this.ProtectedPublic : number
|
||||
>this : this
|
||||
>ProtectedPublic : number
|
||||
>0 : 0
|
||||
|
||||
this.ProtectedProtected = 0;
|
||||
>this.ProtectedProtected = 0 : 0
|
||||
>this.ProtectedProtected : number
|
||||
>this : this
|
||||
>ProtectedProtected : number
|
||||
>0 : 0
|
||||
|
||||
this.ProtectedPrivate = 0;
|
||||
>this.ProtectedPrivate = 0 : 0
|
||||
>this.ProtectedPrivate : number
|
||||
>this : this
|
||||
>ProtectedPrivate : number
|
||||
>0 : 0
|
||||
|
||||
this.PrivatePublic = 0;
|
||||
>this.PrivatePublic = 0 : 0
|
||||
>this.PrivatePublic : number
|
||||
>this : this
|
||||
>PrivatePublic : number
|
||||
>0 : 0
|
||||
|
||||
this.PrivateProtected = 0;
|
||||
>this.PrivateProtected = 0 : 0
|
||||
>this.PrivateProtected : number
|
||||
>this : this
|
||||
>PrivateProtected : number
|
||||
>0 : 0
|
||||
|
||||
this.PrivatePrivate = 0;
|
||||
>this.PrivatePrivate = 0 : 0
|
||||
>this.PrivatePrivate : number
|
||||
>this : this
|
||||
>PrivatePrivate : number
|
||||
>0 : 0
|
||||
|
||||
void this.PublicPublic;
|
||||
>void this.PublicPublic : undefined
|
||||
>this.PublicPublic : number
|
||||
>this : this
|
||||
>PublicPublic : number
|
||||
|
||||
void this.PublicProtected;
|
||||
>void this.PublicProtected : undefined
|
||||
>this.PublicProtected : number
|
||||
>this : this
|
||||
>PublicProtected : number
|
||||
|
||||
void this.PublicPrivate;
|
||||
>void this.PublicPrivate : undefined
|
||||
>this.PublicPrivate : number
|
||||
>this : this
|
||||
>PublicPrivate : number
|
||||
|
||||
void this.ProtectedPublic;
|
||||
>void this.ProtectedPublic : undefined
|
||||
>this.ProtectedPublic : number
|
||||
>this : this
|
||||
>ProtectedPublic : number
|
||||
|
||||
void this.ProtectedProtected;
|
||||
>void this.ProtectedProtected : undefined
|
||||
>this.ProtectedProtected : number
|
||||
>this : this
|
||||
>ProtectedProtected : number
|
||||
|
||||
void this.ProtectedPrivate;
|
||||
>void this.ProtectedPrivate : undefined
|
||||
>this.ProtectedPrivate : number
|
||||
>this : this
|
||||
>ProtectedPrivate : number
|
||||
|
||||
void this.PrivatePublic;
|
||||
>void this.PrivatePublic : undefined
|
||||
>this.PrivatePublic : number
|
||||
>this : this
|
||||
>PrivatePublic : number
|
||||
|
||||
void this.PrivateProtected;
|
||||
>void this.PrivateProtected : undefined
|
||||
>this.PrivateProtected : number
|
||||
>this : this
|
||||
>PrivateProtected : number
|
||||
|
||||
void this.PrivatePrivate;
|
||||
>void this.PrivatePrivate : undefined
|
||||
>this.PrivatePrivate : number
|
||||
>this : this
|
||||
>PrivatePrivate : number
|
||||
|
||||
this.PublicPublic += 0;
|
||||
>this.PublicPublic += 0 : number
|
||||
>this.PublicPublic : number
|
||||
>this : this
|
||||
>PublicPublic : number
|
||||
>0 : 0
|
||||
|
||||
this.PublicProtected += 0;
|
||||
>this.PublicProtected += 0 : number
|
||||
>this.PublicProtected : number
|
||||
>this : this
|
||||
>PublicProtected : number
|
||||
>0 : 0
|
||||
|
||||
this.PublicPrivate += 0;
|
||||
>this.PublicPrivate += 0 : number
|
||||
>this.PublicPrivate : number
|
||||
>this : this
|
||||
>PublicPrivate : number
|
||||
>0 : 0
|
||||
|
||||
this.ProtectedPublic += 0;
|
||||
>this.ProtectedPublic += 0 : number
|
||||
>this.ProtectedPublic : number
|
||||
>this : this
|
||||
>ProtectedPublic : number
|
||||
>0 : 0
|
||||
|
||||
this.ProtectedProtected += 0;
|
||||
>this.ProtectedProtected += 0 : number
|
||||
>this.ProtectedProtected : number
|
||||
>this : this
|
||||
>ProtectedProtected : number
|
||||
>0 : 0
|
||||
|
||||
this.ProtectedPrivate += 0;
|
||||
>this.ProtectedPrivate += 0 : number
|
||||
>this.ProtectedPrivate : number
|
||||
>this : this
|
||||
>ProtectedPrivate : number
|
||||
>0 : 0
|
||||
|
||||
this.PrivatePublic += 0;
|
||||
>this.PrivatePublic += 0 : number
|
||||
>this.PrivatePublic : number
|
||||
>this : this
|
||||
>PrivatePublic : number
|
||||
>0 : 0
|
||||
|
||||
this.PrivateProtected += 0;
|
||||
>this.PrivateProtected += 0 : number
|
||||
>this.PrivateProtected : number
|
||||
>this : this
|
||||
>PrivateProtected : number
|
||||
>0 : 0
|
||||
|
||||
this.PrivatePrivate += 0;
|
||||
>this.PrivatePrivate += 0 : number
|
||||
>this.PrivatePrivate : number
|
||||
>this : this
|
||||
>PrivatePrivate : number
|
||||
>0 : 0
|
||||
}
|
||||
}
|
||||
|
||||
declare const base: Base, deriv: Derived;
|
||||
>base : Base
|
||||
>deriv : Derived
|
||||
|
||||
function fn() {
|
||||
>fn : () => void
|
||||
|
||||
base.PublicPublic = 0;
|
||||
>base.PublicPublic = 0 : 0
|
||||
>base.PublicPublic : number
|
||||
>base : Base
|
||||
>PublicPublic : number
|
||||
>0 : 0
|
||||
|
||||
base.PublicProtected = 0;
|
||||
>base.PublicProtected = 0 : 0
|
||||
>base.PublicProtected : number
|
||||
>base : Base
|
||||
>PublicProtected : number
|
||||
>0 : 0
|
||||
|
||||
base.PublicPrivate = 0;
|
||||
>base.PublicPrivate = 0 : 0
|
||||
>base.PublicPrivate : number
|
||||
>base : Base
|
||||
>PublicPrivate : number
|
||||
>0 : 0
|
||||
|
||||
base.ProtectedPublic = 0;
|
||||
>base.ProtectedPublic = 0 : 0
|
||||
>base.ProtectedPublic : number
|
||||
>base : Base
|
||||
>ProtectedPublic : number
|
||||
>0 : 0
|
||||
|
||||
base.ProtectedProtected = 0;
|
||||
>base.ProtectedProtected = 0 : 0
|
||||
>base.ProtectedProtected : number
|
||||
>base : Base
|
||||
>ProtectedProtected : number
|
||||
>0 : 0
|
||||
|
||||
base.ProtectedPrivate = 0;
|
||||
>base.ProtectedPrivate = 0 : 0
|
||||
>base.ProtectedPrivate : number
|
||||
>base : Base
|
||||
>ProtectedPrivate : number
|
||||
>0 : 0
|
||||
|
||||
base.PrivatePublic = 0;
|
||||
>base.PrivatePublic = 0 : 0
|
||||
>base.PrivatePublic : number
|
||||
>base : Base
|
||||
>PrivatePublic : number
|
||||
>0 : 0
|
||||
|
||||
base.PrivateProtected = 0;
|
||||
>base.PrivateProtected = 0 : 0
|
||||
>base.PrivateProtected : number
|
||||
>base : Base
|
||||
>PrivateProtected : number
|
||||
>0 : 0
|
||||
|
||||
base.PrivatePrivate = 0;
|
||||
>base.PrivatePrivate = 0 : 0
|
||||
>base.PrivatePrivate : number
|
||||
>base : Base
|
||||
>PrivatePrivate : number
|
||||
>0 : 0
|
||||
|
||||
void base.PublicPublic;
|
||||
>void base.PublicPublic : undefined
|
||||
>base.PublicPublic : number
|
||||
>base : Base
|
||||
>PublicPublic : number
|
||||
|
||||
void base.PublicProtected;
|
||||
>void base.PublicProtected : undefined
|
||||
>base.PublicProtected : number
|
||||
>base : Base
|
||||
>PublicProtected : number
|
||||
|
||||
void base.PublicPrivate;
|
||||
>void base.PublicPrivate : undefined
|
||||
>base.PublicPrivate : number
|
||||
>base : Base
|
||||
>PublicPrivate : number
|
||||
|
||||
void base.ProtectedPublic;
|
||||
>void base.ProtectedPublic : undefined
|
||||
>base.ProtectedPublic : number
|
||||
>base : Base
|
||||
>ProtectedPublic : number
|
||||
|
||||
void base.ProtectedProtected;
|
||||
>void base.ProtectedProtected : undefined
|
||||
>base.ProtectedProtected : number
|
||||
>base : Base
|
||||
>ProtectedProtected : number
|
||||
|
||||
void base.ProtectedPrivate;
|
||||
>void base.ProtectedPrivate : undefined
|
||||
>base.ProtectedPrivate : number
|
||||
>base : Base
|
||||
>ProtectedPrivate : number
|
||||
|
||||
void base.PrivatePublic;
|
||||
>void base.PrivatePublic : undefined
|
||||
>base.PrivatePublic : number
|
||||
>base : Base
|
||||
>PrivatePublic : number
|
||||
|
||||
void base.PrivateProtected;
|
||||
>void base.PrivateProtected : undefined
|
||||
>base.PrivateProtected : number
|
||||
>base : Base
|
||||
>PrivateProtected : number
|
||||
|
||||
void base.PrivatePrivate;
|
||||
>void base.PrivatePrivate : undefined
|
||||
>base.PrivatePrivate : number
|
||||
>base : Base
|
||||
>PrivatePrivate : number
|
||||
|
||||
base.PublicPublic += 0;
|
||||
>base.PublicPublic += 0 : number
|
||||
>base.PublicPublic : number
|
||||
>base : Base
|
||||
>PublicPublic : number
|
||||
>0 : 0
|
||||
|
||||
base.PublicProtected += 0;
|
||||
>base.PublicProtected += 0 : number
|
||||
>base.PublicProtected : number
|
||||
>base : Base
|
||||
>PublicProtected : number
|
||||
>0 : 0
|
||||
|
||||
base.PublicPrivate += 0;
|
||||
>base.PublicPrivate += 0 : number
|
||||
>base.PublicPrivate : number
|
||||
>base : Base
|
||||
>PublicPrivate : number
|
||||
>0 : 0
|
||||
|
||||
base.ProtectedPublic += 0;
|
||||
>base.ProtectedPublic += 0 : number
|
||||
>base.ProtectedPublic : number
|
||||
>base : Base
|
||||
>ProtectedPublic : number
|
||||
>0 : 0
|
||||
|
||||
base.ProtectedProtected += 0;
|
||||
>base.ProtectedProtected += 0 : number
|
||||
>base.ProtectedProtected : number
|
||||
>base : Base
|
||||
>ProtectedProtected : number
|
||||
>0 : 0
|
||||
|
||||
base.ProtectedPrivate += 0;
|
||||
>base.ProtectedPrivate += 0 : number
|
||||
>base.ProtectedPrivate : number
|
||||
>base : Base
|
||||
>ProtectedPrivate : number
|
||||
>0 : 0
|
||||
|
||||
base.PrivatePublic += 0;
|
||||
>base.PrivatePublic += 0 : number
|
||||
>base.PrivatePublic : number
|
||||
>base : Base
|
||||
>PrivatePublic : number
|
||||
>0 : 0
|
||||
|
||||
base.PrivateProtected += 0;
|
||||
>base.PrivateProtected += 0 : number
|
||||
>base.PrivateProtected : number
|
||||
>base : Base
|
||||
>PrivateProtected : number
|
||||
>0 : 0
|
||||
|
||||
base.PrivatePrivate += 0;
|
||||
>base.PrivatePrivate += 0 : number
|
||||
>base.PrivatePrivate : number
|
||||
>base : Base
|
||||
>PrivatePrivate : number
|
||||
>0 : 0
|
||||
|
||||
deriv.PublicPublic = 0;
|
||||
>deriv.PublicPublic = 0 : 0
|
||||
>deriv.PublicPublic : number
|
||||
>deriv : Derived
|
||||
>PublicPublic : number
|
||||
>0 : 0
|
||||
|
||||
deriv.PublicProtected = 0;
|
||||
>deriv.PublicProtected = 0 : 0
|
||||
>deriv.PublicProtected : number
|
||||
>deriv : Derived
|
||||
>PublicProtected : number
|
||||
>0 : 0
|
||||
|
||||
deriv.PublicPrivate = 0;
|
||||
>deriv.PublicPrivate = 0 : 0
|
||||
>deriv.PublicPrivate : number
|
||||
>deriv : Derived
|
||||
>PublicPrivate : number
|
||||
>0 : 0
|
||||
|
||||
deriv.ProtectedPublic = 0;
|
||||
>deriv.ProtectedPublic = 0 : 0
|
||||
>deriv.ProtectedPublic : number
|
||||
>deriv : Derived
|
||||
>ProtectedPublic : number
|
||||
>0 : 0
|
||||
|
||||
deriv.ProtectedProtected = 0;
|
||||
>deriv.ProtectedProtected = 0 : 0
|
||||
>deriv.ProtectedProtected : number
|
||||
>deriv : Derived
|
||||
>ProtectedProtected : number
|
||||
>0 : 0
|
||||
|
||||
deriv.ProtectedPrivate = 0;
|
||||
>deriv.ProtectedPrivate = 0 : 0
|
||||
>deriv.ProtectedPrivate : number
|
||||
>deriv : Derived
|
||||
>ProtectedPrivate : number
|
||||
>0 : 0
|
||||
|
||||
deriv.PrivatePublic = 0;
|
||||
>deriv.PrivatePublic = 0 : 0
|
||||
>deriv.PrivatePublic : number
|
||||
>deriv : Derived
|
||||
>PrivatePublic : number
|
||||
>0 : 0
|
||||
|
||||
deriv.PrivateProtected = 0;
|
||||
>deriv.PrivateProtected = 0 : 0
|
||||
>deriv.PrivateProtected : number
|
||||
>deriv : Derived
|
||||
>PrivateProtected : number
|
||||
>0 : 0
|
||||
|
||||
deriv.PrivatePrivate = 0;
|
||||
>deriv.PrivatePrivate = 0 : 0
|
||||
>deriv.PrivatePrivate : number
|
||||
>deriv : Derived
|
||||
>PrivatePrivate : number
|
||||
>0 : 0
|
||||
|
||||
void deriv.PublicPublic;
|
||||
>void deriv.PublicPublic : undefined
|
||||
>deriv.PublicPublic : number
|
||||
>deriv : Derived
|
||||
>PublicPublic : number
|
||||
|
||||
void deriv.PublicProtected;
|
||||
>void deriv.PublicProtected : undefined
|
||||
>deriv.PublicProtected : number
|
||||
>deriv : Derived
|
||||
>PublicProtected : number
|
||||
|
||||
void deriv.PublicPrivate;
|
||||
>void deriv.PublicPrivate : undefined
|
||||
>deriv.PublicPrivate : number
|
||||
>deriv : Derived
|
||||
>PublicPrivate : number
|
||||
|
||||
void deriv.ProtectedPublic;
|
||||
>void deriv.ProtectedPublic : undefined
|
||||
>deriv.ProtectedPublic : number
|
||||
>deriv : Derived
|
||||
>ProtectedPublic : number
|
||||
|
||||
void deriv.ProtectedProtected;
|
||||
>void deriv.ProtectedProtected : undefined
|
||||
>deriv.ProtectedProtected : number
|
||||
>deriv : Derived
|
||||
>ProtectedProtected : number
|
||||
|
||||
void deriv.ProtectedPrivate;
|
||||
>void deriv.ProtectedPrivate : undefined
|
||||
>deriv.ProtectedPrivate : number
|
||||
>deriv : Derived
|
||||
>ProtectedPrivate : number
|
||||
|
||||
void deriv.PrivatePublic;
|
||||
>void deriv.PrivatePublic : undefined
|
||||
>deriv.PrivatePublic : number
|
||||
>deriv : Derived
|
||||
>PrivatePublic : number
|
||||
|
||||
void deriv.PrivateProtected;
|
||||
>void deriv.PrivateProtected : undefined
|
||||
>deriv.PrivateProtected : number
|
||||
>deriv : Derived
|
||||
>PrivateProtected : number
|
||||
|
||||
void deriv.PrivatePrivate;
|
||||
>void deriv.PrivatePrivate : undefined
|
||||
>deriv.PrivatePrivate : number
|
||||
>deriv : Derived
|
||||
>PrivatePrivate : number
|
||||
|
||||
deriv.PublicPublic += 0;
|
||||
>deriv.PublicPublic += 0 : number
|
||||
>deriv.PublicPublic : number
|
||||
>deriv : Derived
|
||||
>PublicPublic : number
|
||||
>0 : 0
|
||||
|
||||
deriv.PublicProtected += 0;
|
||||
>deriv.PublicProtected += 0 : number
|
||||
>deriv.PublicProtected : number
|
||||
>deriv : Derived
|
||||
>PublicProtected : number
|
||||
>0 : 0
|
||||
|
||||
deriv.PublicPrivate += 0;
|
||||
>deriv.PublicPrivate += 0 : number
|
||||
>deriv.PublicPrivate : number
|
||||
>deriv : Derived
|
||||
>PublicPrivate : number
|
||||
>0 : 0
|
||||
|
||||
deriv.ProtectedPublic += 0;
|
||||
>deriv.ProtectedPublic += 0 : number
|
||||
>deriv.ProtectedPublic : number
|
||||
>deriv : Derived
|
||||
>ProtectedPublic : number
|
||||
>0 : 0
|
||||
|
||||
deriv.ProtectedProtected += 0;
|
||||
>deriv.ProtectedProtected += 0 : number
|
||||
>deriv.ProtectedProtected : number
|
||||
>deriv : Derived
|
||||
>ProtectedProtected : number
|
||||
>0 : 0
|
||||
|
||||
deriv.ProtectedPrivate += 0;
|
||||
>deriv.ProtectedPrivate += 0 : number
|
||||
>deriv.ProtectedPrivate : number
|
||||
>deriv : Derived
|
||||
>ProtectedPrivate : number
|
||||
>0 : 0
|
||||
|
||||
deriv.PrivatePublic += 0;
|
||||
>deriv.PrivatePublic += 0 : number
|
||||
>deriv.PrivatePublic : number
|
||||
>deriv : Derived
|
||||
>PrivatePublic : number
|
||||
>0 : 0
|
||||
|
||||
deriv.PrivateProtected += 0;
|
||||
>deriv.PrivateProtected += 0 : number
|
||||
>deriv.PrivateProtected : number
|
||||
>deriv : Derived
|
||||
>PrivateProtected : number
|
||||
>0 : 0
|
||||
|
||||
deriv.PrivatePrivate += 0;
|
||||
>deriv.PrivatePrivate += 0 : number
|
||||
>deriv.PrivatePrivate : number
|
||||
>deriv : Derived
|
||||
>PrivatePrivate : number
|
||||
>0 : 0
|
||||
}
|
||||
|
||||
@@ -1,21 +1,18 @@
|
||||
tests/cases/compiler/getAndSetNotIdenticalType.ts(2,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
|
||||
tests/cases/compiler/getAndSetNotIdenticalType.ts(2,9): error TS2380: 'get' and 'set' accessor must have the same type.
|
||||
tests/cases/compiler/getAndSetNotIdenticalType.ts(2,9): error TS2380: The return type of a 'get' accessor must be assignable to its 'set' accessor type
|
||||
tests/cases/compiler/getAndSetNotIdenticalType.ts(5,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
|
||||
tests/cases/compiler/getAndSetNotIdenticalType.ts(5,9): error TS2380: 'get' and 'set' accessor must have the same type.
|
||||
|
||||
|
||||
==== tests/cases/compiler/getAndSetNotIdenticalType.ts (4 errors) ====
|
||||
==== tests/cases/compiler/getAndSetNotIdenticalType.ts (3 errors) ====
|
||||
class C {
|
||||
get x(): number {
|
||||
~
|
||||
!!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
|
||||
~
|
||||
!!! error TS2380: 'get' and 'set' accessor must have the same type.
|
||||
!!! error TS2380: The return type of a 'get' accessor must be assignable to its 'set' accessor type
|
||||
return 1;
|
||||
}
|
||||
set x(v: string) { }
|
||||
~
|
||||
!!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
|
||||
~
|
||||
!!! error TS2380: 'get' and 'set' accessor must have the same type.
|
||||
}
|
||||
@@ -1,13 +1,16 @@
|
||||
tests/cases/compiler/getAndSetNotIdenticalType2.ts(5,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
|
||||
tests/cases/compiler/getAndSetNotIdenticalType2.ts(5,9): error TS2380: 'get' and 'set' accessor must have the same type.
|
||||
tests/cases/compiler/getAndSetNotIdenticalType2.ts(5,9): error TS2380: The return type of a 'get' accessor must be assignable to its 'set' accessor type
|
||||
tests/cases/compiler/getAndSetNotIdenticalType2.ts(5,9): error TS2380: The return type of a 'get' accessor must be assignable to its 'set' accessor type
|
||||
Type 'T' is not assignable to type 'string'.
|
||||
tests/cases/compiler/getAndSetNotIdenticalType2.ts(8,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
|
||||
tests/cases/compiler/getAndSetNotIdenticalType2.ts(8,9): error TS2380: 'get' and 'set' accessor must have the same type.
|
||||
tests/cases/compiler/getAndSetNotIdenticalType2.ts(9,9): error TS2322: Type 'A<string>' is not assignable to type 'A<T>'.
|
||||
Type 'string' is not assignable to type 'T'.
|
||||
'T' could be instantiated with an arbitrary type which could be unrelated to 'string'.
|
||||
tests/cases/compiler/getAndSetNotIdenticalType2.ts(15,1): error TS2322: Type 'A<unknown>' is not assignable to type 'A<string>'.
|
||||
Type 'unknown' is not assignable to type 'string'.
|
||||
|
||||
|
||||
==== tests/cases/compiler/getAndSetNotIdenticalType2.ts (5 errors) ====
|
||||
==== tests/cases/compiler/getAndSetNotIdenticalType2.ts (6 errors) ====
|
||||
class A<T> { foo: T; }
|
||||
|
||||
class C<T> {
|
||||
@@ -16,14 +19,15 @@ tests/cases/compiler/getAndSetNotIdenticalType2.ts(9,9): error TS2322: Type 'A<s
|
||||
~
|
||||
!!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
|
||||
~
|
||||
!!! error TS2380: 'get' and 'set' accessor must have the same type.
|
||||
!!! error TS2380: The return type of a 'get' accessor must be assignable to its 'set' accessor type
|
||||
~
|
||||
!!! error TS2380: The return type of a 'get' accessor must be assignable to its 'set' accessor type
|
||||
!!! error TS2380: Type 'T' is not assignable to type 'string'.
|
||||
return this.data;
|
||||
}
|
||||
set x(v: A<string>) {
|
||||
~
|
||||
!!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
|
||||
~
|
||||
!!! error TS2380: 'get' and 'set' accessor must have the same type.
|
||||
this.data = v;
|
||||
~~~~~~~~~
|
||||
!!! error TS2322: Type 'A<string>' is not assignable to type 'A<T>'.
|
||||
@@ -34,4 +38,7 @@ tests/cases/compiler/getAndSetNotIdenticalType2.ts(9,9): error TS2322: Type 'A<s
|
||||
|
||||
var x = new C();
|
||||
var r = x.x;
|
||||
x.x = r;
|
||||
x.x = r;
|
||||
~~~
|
||||
!!! error TS2322: Type 'A<unknown>' is not assignable to type 'A<string>'.
|
||||
!!! error TS2322: Type 'unknown' is not assignable to type 'string'.
|
||||
@@ -43,8 +43,8 @@ var r = x.x;
|
||||
|
||||
x.x = r;
|
||||
>x.x = r : A<unknown>
|
||||
>x.x : A<unknown>
|
||||
>x.x : A<string>
|
||||
>x : C<unknown>
|
||||
>x : A<unknown>
|
||||
>x : A<string>
|
||||
>r : A<unknown>
|
||||
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
tests/cases/compiler/getAndSetNotIdenticalType3.ts(5,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
|
||||
tests/cases/compiler/getAndSetNotIdenticalType3.ts(5,9): error TS2380: 'get' and 'set' accessor must have the same type.
|
||||
tests/cases/compiler/getAndSetNotIdenticalType3.ts(5,9): error TS2380: The return type of a 'get' accessor must be assignable to its 'set' accessor type
|
||||
tests/cases/compiler/getAndSetNotIdenticalType3.ts(5,9): error TS2380: The return type of a 'get' accessor must be assignable to its 'set' accessor type
|
||||
Type 'number' is not assignable to type 'string'.
|
||||
tests/cases/compiler/getAndSetNotIdenticalType3.ts(8,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
|
||||
tests/cases/compiler/getAndSetNotIdenticalType3.ts(8,9): error TS2380: 'get' and 'set' accessor must have the same type.
|
||||
tests/cases/compiler/getAndSetNotIdenticalType3.ts(9,9): error TS2322: Type 'A<string>' is not assignable to type 'A<number>'.
|
||||
Type 'string' is not assignable to type 'number'.
|
||||
tests/cases/compiler/getAndSetNotIdenticalType3.ts(15,1): error TS2322: Type 'A<number>' is not assignable to type 'A<string>'.
|
||||
|
||||
|
||||
==== tests/cases/compiler/getAndSetNotIdenticalType3.ts (5 errors) ====
|
||||
==== tests/cases/compiler/getAndSetNotIdenticalType3.ts (6 errors) ====
|
||||
class A<T> { foo: T; }
|
||||
|
||||
class C<T> {
|
||||
@@ -15,14 +17,15 @@ tests/cases/compiler/getAndSetNotIdenticalType3.ts(9,9): error TS2322: Type 'A<s
|
||||
~
|
||||
!!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
|
||||
~
|
||||
!!! error TS2380: 'get' and 'set' accessor must have the same type.
|
||||
!!! error TS2380: The return type of a 'get' accessor must be assignable to its 'set' accessor type
|
||||
~
|
||||
!!! error TS2380: The return type of a 'get' accessor must be assignable to its 'set' accessor type
|
||||
!!! error TS2380: Type 'number' is not assignable to type 'string'.
|
||||
return this.data;
|
||||
}
|
||||
set x(v: A<string>) {
|
||||
~
|
||||
!!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
|
||||
~
|
||||
!!! error TS2380: 'get' and 'set' accessor must have the same type.
|
||||
this.data = v;
|
||||
~~~~~~~~~
|
||||
!!! error TS2322: Type 'A<string>' is not assignable to type 'A<number>'.
|
||||
@@ -32,4 +35,6 @@ tests/cases/compiler/getAndSetNotIdenticalType3.ts(9,9): error TS2322: Type 'A<s
|
||||
|
||||
var x = new C();
|
||||
var r = x.x;
|
||||
x.x = r;
|
||||
x.x = r;
|
||||
~~~
|
||||
!!! error TS2322: Type 'A<number>' is not assignable to type 'A<string>'.
|
||||
@@ -43,8 +43,8 @@ var r = x.x;
|
||||
|
||||
x.x = r;
|
||||
>x.x = r : A<number>
|
||||
>x.x : A<number>
|
||||
>x.x : A<string>
|
||||
>x : C<unknown>
|
||||
>x : A<number>
|
||||
>x : A<string>
|
||||
>r : A<number>
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
tests/cases/compiler/gettersAndSettersAccessibility.ts(2,14): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
|
||||
tests/cases/compiler/gettersAndSettersAccessibility.ts(2,14): error TS2379: Getter and setter accessors do not agree in visibility.
|
||||
tests/cases/compiler/gettersAndSettersAccessibility.ts(2,14): error TS2808: A get accessor must be at least as accessible as the setter
|
||||
tests/cases/compiler/gettersAndSettersAccessibility.ts(3,13): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
|
||||
tests/cases/compiler/gettersAndSettersAccessibility.ts(3,13): error TS2379: Getter and setter accessors do not agree in visibility.
|
||||
tests/cases/compiler/gettersAndSettersAccessibility.ts(3,13): error TS2808: A get accessor must be at least as accessible as the setter
|
||||
|
||||
|
||||
==== tests/cases/compiler/gettersAndSettersAccessibility.ts (4 errors) ====
|
||||
@@ -10,11 +10,11 @@ tests/cases/compiler/gettersAndSettersAccessibility.ts(3,13): error TS2379: Gett
|
||||
~~~
|
||||
!!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
|
||||
~~~
|
||||
!!! error TS2379: Getter and setter accessors do not agree in visibility.
|
||||
!!! error TS2808: A get accessor must be at least as accessible as the setter
|
||||
public set Baz(n:number) {} // error - accessors do not agree in visibility
|
||||
~~~
|
||||
!!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
|
||||
~~~
|
||||
!!! error TS2379: Getter and setter accessors do not agree in visibility.
|
||||
!!! error TS2808: A get accessor must be at least as accessible as the setter
|
||||
}
|
||||
|
||||
@@ -5,9 +5,9 @@ tests/cases/compiler/gettersAndSettersErrors.ts(5,12): error TS2717: Subsequent
|
||||
tests/cases/compiler/gettersAndSettersErrors.ts(6,16): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
|
||||
tests/cases/compiler/gettersAndSettersErrors.ts(7,16): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
|
||||
tests/cases/compiler/gettersAndSettersErrors.ts(11,17): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
|
||||
tests/cases/compiler/gettersAndSettersErrors.ts(11,17): error TS2379: Getter and setter accessors do not agree in visibility.
|
||||
tests/cases/compiler/gettersAndSettersErrors.ts(11,17): error TS2808: A get accessor must be at least as accessible as the setter
|
||||
tests/cases/compiler/gettersAndSettersErrors.ts(12,16): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
|
||||
tests/cases/compiler/gettersAndSettersErrors.ts(12,16): error TS2379: Getter and setter accessors do not agree in visibility.
|
||||
tests/cases/compiler/gettersAndSettersErrors.ts(12,16): error TS2808: A get accessor must be at least as accessible as the setter
|
||||
|
||||
|
||||
==== tests/cases/compiler/gettersAndSettersErrors.ts (10 errors) ====
|
||||
@@ -38,12 +38,12 @@ tests/cases/compiler/gettersAndSettersErrors.ts(12,16): error TS2379: Getter and
|
||||
~~~
|
||||
!!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
|
||||
~~~
|
||||
!!! error TS2379: Getter and setter accessors do not agree in visibility.
|
||||
!!! error TS2808: A get accessor must be at least as accessible as the setter
|
||||
public set Baz(n:number) {} // error - accessors do not agree in visibility
|
||||
~~~
|
||||
!!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
|
||||
~~~
|
||||
!!! error TS2379: Getter and setter accessors do not agree in visibility.
|
||||
!!! error TS2808: A get accessor must be at least as accessible as the setter
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
tests/cases/conformance/jsdoc/jsdocAccessibilityTag.js(21,9): error TS2379: Getter and setter accessors do not agree in visibility.
|
||||
tests/cases/conformance/jsdoc/jsdocAccessibilityTag.js(23,9): error TS2379: Getter and setter accessors do not agree in visibility.
|
||||
tests/cases/conformance/jsdoc/jsdocAccessibilityTag.js(50,14): error TS2341: Property 'priv' is private and only accessible within class 'A'.
|
||||
tests/cases/conformance/jsdoc/jsdocAccessibilityTag.js(55,14): error TS2341: Property 'priv2' is private and only accessible within class 'C'.
|
||||
tests/cases/conformance/jsdoc/jsdocAccessibilityTag.js(58,9): error TS2341: Property 'priv' is private and only accessible within class 'A'.
|
||||
@@ -12,7 +10,7 @@ tests/cases/conformance/jsdoc/jsdocAccessibilityTag.js(61,9): error TS2341: Prop
|
||||
tests/cases/conformance/jsdoc/jsdocAccessibilityTag.js(61,25): error TS2445: Property 'prot2' is protected and only accessible within class 'C' and its subclasses.
|
||||
|
||||
|
||||
==== tests/cases/conformance/jsdoc/jsdocAccessibilityTag.js (12 errors) ====
|
||||
==== tests/cases/conformance/jsdoc/jsdocAccessibilityTag.js (10 errors) ====
|
||||
class A {
|
||||
/**
|
||||
* Ap docs
|
||||
@@ -34,12 +32,8 @@ tests/cases/conformance/jsdoc/jsdocAccessibilityTag.js(61,25): error TS2445: Pro
|
||||
pub = 6;
|
||||
/** @public */
|
||||
get ack() { return this.priv }
|
||||
~~~
|
||||
!!! error TS2379: Getter and setter accessors do not agree in visibility.
|
||||
/** @private */
|
||||
set ack(value) { }
|
||||
~~~
|
||||
!!! error TS2379: Getter and setter accessors do not agree in visibility.
|
||||
}
|
||||
class C {
|
||||
constructor() {
|
||||
|
||||
@@ -71,14 +71,12 @@ tests/cases/conformance/expressions/objectLiterals/objectLiteralErrors.ts(38,26)
|
||||
tests/cases/conformance/expressions/objectLiterals/objectLiteralErrors.ts(39,13): error TS2300: Duplicate identifier 'a'.
|
||||
tests/cases/conformance/expressions/objectLiterals/objectLiteralErrors.ts(39,46): error TS1119: An object literal cannot have property and accessor with the same name.
|
||||
tests/cases/conformance/expressions/objectLiterals/objectLiteralErrors.ts(39,46): error TS2300: Duplicate identifier 'a'.
|
||||
tests/cases/conformance/expressions/objectLiterals/objectLiteralErrors.ts(42,16): error TS2380: 'get' and 'set' accessor must have the same type.
|
||||
tests/cases/conformance/expressions/objectLiterals/objectLiteralErrors.ts(42,47): error TS2380: 'get' and 'set' accessor must have the same type.
|
||||
tests/cases/conformance/expressions/objectLiterals/objectLiteralErrors.ts(42,16): error TS2380: The return type of a 'get' accessor must be assignable to its 'set' accessor type
|
||||
tests/cases/conformance/expressions/objectLiterals/objectLiteralErrors.ts(43,22): error TS2322: Type 'number' is not assignable to type 'string'.
|
||||
tests/cases/conformance/expressions/objectLiterals/objectLiteralErrors.ts(44,16): error TS2380: 'get' and 'set' accessor must have the same type.
|
||||
tests/cases/conformance/expressions/objectLiterals/objectLiteralErrors.ts(44,55): error TS2380: 'get' and 'set' accessor must have the same type.
|
||||
tests/cases/conformance/expressions/objectLiterals/objectLiteralErrors.ts(44,16): error TS2380: The return type of a 'get' accessor must be assignable to its 'set' accessor type
|
||||
|
||||
|
||||
==== tests/cases/conformance/expressions/objectLiterals/objectLiteralErrors.ts (78 errors) ====
|
||||
==== tests/cases/conformance/expressions/objectLiterals/objectLiteralErrors.ts (76 errors) ====
|
||||
// Multiple properties with the same name
|
||||
var e1 = { a: 0, a: 0 };
|
||||
~
|
||||
@@ -268,15 +266,11 @@ tests/cases/conformance/expressions/objectLiterals/objectLiteralErrors.ts(44,55)
|
||||
// Get and set accessor with mismatched type annotations
|
||||
var g1 = { get a(): number { return 4; }, set a(n: string) { } };
|
||||
~
|
||||
!!! error TS2380: 'get' and 'set' accessor must have the same type.
|
||||
~
|
||||
!!! error TS2380: 'get' and 'set' accessor must have the same type.
|
||||
!!! error TS2380: The return type of a 'get' accessor must be assignable to its 'set' accessor type
|
||||
var g2 = { get a() { return 4; }, set a(n: string) { } };
|
||||
~~~~~~~~~
|
||||
!!! error TS2322: Type 'number' is not assignable to type 'string'.
|
||||
var g3 = { get a(): number { return undefined; }, set a(n: string) { } };
|
||||
~
|
||||
!!! error TS2380: 'get' and 'set' accessor must have the same type.
|
||||
~
|
||||
!!! error TS2380: 'get' and 'set' accessor must have the same type.
|
||||
!!! error TS2380: The return type of a 'get' accessor must be assignable to its 'set' accessor type
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
tests/cases/conformance/types/thisType/thisTypeInAccessorsNegative.ts(10,9): error TS2682: 'get' and 'set' accessor must have the same 'this' type.
|
||||
tests/cases/conformance/types/thisType/thisTypeInAccessorsNegative.ts(10,11): error TS2784: 'get' and 'set' accessors cannot declare 'this' parameters.
|
||||
tests/cases/conformance/types/thisType/thisTypeInAccessorsNegative.ts(11,9): error TS2682: 'get' and 'set' accessor must have the same 'this' type.
|
||||
tests/cases/conformance/types/thisType/thisTypeInAccessorsNegative.ts(11,11): error TS2784: 'get' and 'set' accessors cannot declare 'this' parameters.
|
||||
|
||||
|
||||
==== tests/cases/conformance/types/thisType/thisTypeInAccessorsNegative.ts (4 errors) ====
|
||||
==== tests/cases/conformance/types/thisType/thisTypeInAccessorsNegative.ts (2 errors) ====
|
||||
interface Foo {
|
||||
n: number;
|
||||
x: number;
|
||||
@@ -15,13 +13,9 @@ tests/cases/conformance/types/thisType/thisTypeInAccessorsNegative.ts(11,11): er
|
||||
const mismatch = {
|
||||
n: 13,
|
||||
get x(this: Foo) { return this.n; },
|
||||
~
|
||||
!!! error TS2682: 'get' and 'set' accessor must have the same 'this' type.
|
||||
~~~~~~~~~
|
||||
!!! error TS2784: 'get' and 'set' accessors cannot declare 'this' parameters.
|
||||
set x(this: Bar, n) { this.wrong = "method"; }
|
||||
~
|
||||
!!! error TS2682: 'get' and 'set' accessor must have the same 'this' type.
|
||||
~~~~~~~~~
|
||||
!!! error TS2784: 'get' and 'set' accessors cannot declare 'this' parameters.
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
type A = {
|
||||
get foo() { return 0 }
|
||||
};
|
||||
|
||||
type B = {
|
||||
set foo(v: any) { }
|
||||
};
|
||||
|
||||
interface X {
|
||||
get foo() { return 0 }
|
||||
}
|
||||
|
||||
interface Y {
|
||||
set foo(v: any) { }
|
||||
}
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
// @strict: true
|
||||
|
||||
// Accessors in interfaces/types
|
||||
|
||||
{
|
||||
interface IHasGetSet {
|
||||
get foo(): number;
|
||||
set foo(v: number | string);
|
||||
}
|
||||
|
||||
const ihgs: IHasGetSet = null as any;
|
||||
ihgs.foo = "32";
|
||||
let r_ihgs_foo: number = ihgs.foo;
|
||||
}
|
||||
|
||||
{
|
||||
type T_HasGetSet = {
|
||||
get foo(): number;
|
||||
set foo(v: number | string);
|
||||
}
|
||||
|
||||
const t_hgs: T_HasGetSet = null as any;
|
||||
t_hgs.foo = "32";
|
||||
let r_t_hgs_foo: number = t_hgs.foo;
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
// @strict: true
|
||||
// @target: esnext
|
||||
|
||||
class Test1 {
|
||||
get foo(): string { return "" }
|
||||
set foo(s: string | number) {
|
||||
let a = s as string;
|
||||
let b = s as number;
|
||||
}
|
||||
|
||||
get bar(): string | number { return "" }
|
||||
set bar(s: string | number | boolean) {
|
||||
}
|
||||
}
|
||||
|
||||
interface Test2 {
|
||||
get foo(): string;
|
||||
set foo(s: string | number);
|
||||
|
||||
get bar(): string | number;
|
||||
set bar(s: string | number | boolean);
|
||||
}
|
||||
|
||||
type Test3 = {
|
||||
get foo(): string;
|
||||
set foo(s: string | number);
|
||||
|
||||
get bar(): string | number;
|
||||
set bar(s: string | number | boolean);
|
||||
};
|
||||
|
||||
{
|
||||
const t = new Test1();
|
||||
t.foo = 32;
|
||||
let m: string = t.foo;
|
||||
|
||||
// See how CFA interacts with out-of-type writes
|
||||
t.bar = 42;
|
||||
let n: number = t.bar;
|
||||
t.bar = false;
|
||||
let o = t.bar;
|
||||
}
|
||||
|
||||
{
|
||||
const t = {} as Test2;
|
||||
t.foo = 32;
|
||||
let m: string = t.foo;
|
||||
|
||||
// See how CFA interacts with out-of-type writes
|
||||
t.bar = 42;
|
||||
let n: number = t.bar;
|
||||
t.bar = false;
|
||||
let o = t.bar;
|
||||
}
|
||||
|
||||
{
|
||||
const t = {} as Test3;
|
||||
t.foo = 32;
|
||||
let m: string = t.foo;
|
||||
|
||||
// See how CFA interacts with out-of-type writes
|
||||
t.bar = 42;
|
||||
let n: number = t.bar;
|
||||
t.bar = false;
|
||||
let o = t.bar;
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
// @strict: true
|
||||
// @target: esnext
|
||||
|
||||
class Test1<T> {
|
||||
get foo(): T { return null as any }
|
||||
set foo(s: T | undefined ) {
|
||||
}
|
||||
}
|
||||
|
||||
const s = new Test1<string>();
|
||||
s.foo = undefined;
|
||||
s.foo = "hello";
|
||||
s.foo = 42;
|
||||
@@ -0,0 +1,160 @@
|
||||
// @strict: true
|
||||
// @target: esnext
|
||||
|
||||
class Base {
|
||||
get PublicPublic() { return 0; }
|
||||
set PublicPublic(v) { return; }
|
||||
|
||||
get PublicProtected() { return 0; }
|
||||
protected set PublicProtected(v) { return; }
|
||||
|
||||
get PublicPrivate() { return 0; }
|
||||
private set PublicPrivate(v) { return; }
|
||||
|
||||
protected get ProtectedPublic() { return 0; }
|
||||
set ProtectedPublic(v) { return; }
|
||||
|
||||
protected get ProtectedProtected() { return 0; }
|
||||
protected set ProtectedProtected(v) { return; }
|
||||
|
||||
protected get ProtectedPrivate() { return 0; }
|
||||
private set ProtectedPrivate(v) { return; }
|
||||
|
||||
private get PrivatePublic() { return 0; }
|
||||
set PrivatePublic(v) { return; }
|
||||
|
||||
private get PrivateProtected() { return 0; }
|
||||
protected set PrivateProtected(v) { return; }
|
||||
|
||||
private get PrivatePrivate() { return 0; }
|
||||
private set PrivatePrivate(v) { return; }
|
||||
|
||||
test() {
|
||||
this.PublicPublic = 0;
|
||||
this.PublicProtected = 0;
|
||||
this.PublicPrivate = 0;
|
||||
this.ProtectedPublic = 0;
|
||||
this.ProtectedProtected = 0;
|
||||
this.ProtectedPrivate = 0;
|
||||
this.PrivatePublic = 0;
|
||||
this.PrivateProtected = 0;
|
||||
this.PrivatePrivate = 0;
|
||||
|
||||
void this.PublicPublic;
|
||||
void this.PublicProtected;
|
||||
void this.PublicPrivate;
|
||||
void this.ProtectedPublic;
|
||||
void this.ProtectedProtected;
|
||||
void this.ProtectedPrivate;
|
||||
void this.PrivatePublic;
|
||||
void this.PrivateProtected;
|
||||
void this.PrivatePrivate;
|
||||
|
||||
this.PublicPublic += 0;
|
||||
this.PublicProtected += 0;
|
||||
this.PublicPrivate += 0;
|
||||
this.ProtectedPublic += 0;
|
||||
this.ProtectedProtected += 0;
|
||||
this.ProtectedPrivate += 0;
|
||||
this.PrivatePublic += 0;
|
||||
this.PrivateProtected += 0;
|
||||
this.PrivatePrivate += 0;
|
||||
}
|
||||
}
|
||||
|
||||
class Derived extends Base {
|
||||
test2() {
|
||||
this.PublicPublic = 0;
|
||||
this.PublicProtected = 0;
|
||||
this.PublicPrivate = 0;
|
||||
this.ProtectedPublic = 0;
|
||||
this.ProtectedProtected = 0;
|
||||
this.ProtectedPrivate = 0;
|
||||
this.PrivatePublic = 0;
|
||||
this.PrivateProtected = 0;
|
||||
this.PrivatePrivate = 0;
|
||||
|
||||
void this.PublicPublic;
|
||||
void this.PublicProtected;
|
||||
void this.PublicPrivate;
|
||||
void this.ProtectedPublic;
|
||||
void this.ProtectedProtected;
|
||||
void this.ProtectedPrivate;
|
||||
void this.PrivatePublic;
|
||||
void this.PrivateProtected;
|
||||
void this.PrivatePrivate;
|
||||
|
||||
this.PublicPublic += 0;
|
||||
this.PublicProtected += 0;
|
||||
this.PublicPrivate += 0;
|
||||
this.ProtectedPublic += 0;
|
||||
this.ProtectedProtected += 0;
|
||||
this.ProtectedPrivate += 0;
|
||||
this.PrivatePublic += 0;
|
||||
this.PrivateProtected += 0;
|
||||
this.PrivatePrivate += 0;
|
||||
}
|
||||
}
|
||||
|
||||
declare const base: Base, deriv: Derived;
|
||||
function fn() {
|
||||
base.PublicPublic = 0;
|
||||
base.PublicProtected = 0;
|
||||
base.PublicPrivate = 0;
|
||||
base.ProtectedPublic = 0;
|
||||
base.ProtectedProtected = 0;
|
||||
base.ProtectedPrivate = 0;
|
||||
base.PrivatePublic = 0;
|
||||
base.PrivateProtected = 0;
|
||||
base.PrivatePrivate = 0;
|
||||
|
||||
void base.PublicPublic;
|
||||
void base.PublicProtected;
|
||||
void base.PublicPrivate;
|
||||
void base.ProtectedPublic;
|
||||
void base.ProtectedProtected;
|
||||
void base.ProtectedPrivate;
|
||||
void base.PrivatePublic;
|
||||
void base.PrivateProtected;
|
||||
void base.PrivatePrivate;
|
||||
|
||||
base.PublicPublic += 0;
|
||||
base.PublicProtected += 0;
|
||||
base.PublicPrivate += 0;
|
||||
base.ProtectedPublic += 0;
|
||||
base.ProtectedProtected += 0;
|
||||
base.ProtectedPrivate += 0;
|
||||
base.PrivatePublic += 0;
|
||||
base.PrivateProtected += 0;
|
||||
base.PrivatePrivate += 0;
|
||||
|
||||
deriv.PublicPublic = 0;
|
||||
deriv.PublicProtected = 0;
|
||||
deriv.PublicPrivate = 0;
|
||||
deriv.ProtectedPublic = 0;
|
||||
deriv.ProtectedProtected = 0;
|
||||
deriv.ProtectedPrivate = 0;
|
||||
deriv.PrivatePublic = 0;
|
||||
deriv.PrivateProtected = 0;
|
||||
deriv.PrivatePrivate = 0;
|
||||
|
||||
void deriv.PublicPublic;
|
||||
void deriv.PublicProtected;
|
||||
void deriv.PublicPrivate;
|
||||
void deriv.ProtectedPublic;
|
||||
void deriv.ProtectedProtected;
|
||||
void deriv.ProtectedPrivate;
|
||||
void deriv.PrivatePublic;
|
||||
void deriv.PrivateProtected;
|
||||
void deriv.PrivatePrivate;
|
||||
|
||||
deriv.PublicPublic += 0;
|
||||
deriv.PublicProtected += 0;
|
||||
deriv.PublicPrivate += 0;
|
||||
deriv.ProtectedPublic += 0;
|
||||
deriv.ProtectedProtected += 0;
|
||||
deriv.ProtectedPrivate += 0;
|
||||
deriv.PrivatePublic += 0;
|
||||
deriv.PrivateProtected += 0;
|
||||
deriv.PrivatePrivate += 0;
|
||||
}
|
||||
@@ -16,4 +16,4 @@
|
||||
verify.quickInfoAt("1", "var b: string");
|
||||
|
||||
// TypeCheck
|
||||
verify.numberOfErrorsInCurrentFile(3);
|
||||
verify.numberOfErrorsInCurrentFile(2);
|
||||
Reference in New Issue
Block a user