Skip to content

Added protected conformance tests #730

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Sep 23, 2014
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
99 changes: 99 additions & 0 deletions tests/baselines/reference/accessibilityModifiers.errors.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
tests/cases/conformance/classes/propertyMemberDeclarations/accessibilityModifiers.ts(22,12): error TS1029: 'private' modifier must precede 'static' modifier.
tests/cases/conformance/classes/propertyMemberDeclarations/accessibilityModifiers.ts(23,12): error TS1029: 'private' modifier must precede 'static' modifier.
tests/cases/conformance/classes/propertyMemberDeclarations/accessibilityModifiers.ts(24,12): error TS1029: 'private' modifier must precede 'static' modifier.
tests/cases/conformance/classes/propertyMemberDeclarations/accessibilityModifiers.ts(25,12): error TS1029: 'private' modifier must precede 'static' modifier.
tests/cases/conformance/classes/propertyMemberDeclarations/accessibilityModifiers.ts(27,12): error TS1029: 'protected' modifier must precede 'static' modifier.
tests/cases/conformance/classes/propertyMemberDeclarations/accessibilityModifiers.ts(28,12): error TS1029: 'protected' modifier must precede 'static' modifier.
tests/cases/conformance/classes/propertyMemberDeclarations/accessibilityModifiers.ts(29,12): error TS1029: 'protected' modifier must precede 'static' modifier.
tests/cases/conformance/classes/propertyMemberDeclarations/accessibilityModifiers.ts(30,12): error TS1029: 'protected' modifier must precede 'static' modifier.
tests/cases/conformance/classes/propertyMemberDeclarations/accessibilityModifiers.ts(32,12): error TS1029: 'public' modifier must precede 'static' modifier.
tests/cases/conformance/classes/propertyMemberDeclarations/accessibilityModifiers.ts(33,12): error TS1029: 'public' modifier must precede 'static' modifier.
tests/cases/conformance/classes/propertyMemberDeclarations/accessibilityModifiers.ts(34,12): error TS1029: 'public' modifier must precede 'static' modifier.
tests/cases/conformance/classes/propertyMemberDeclarations/accessibilityModifiers.ts(35,12): error TS1029: 'public' modifier must precede 'static' modifier.
tests/cases/conformance/classes/propertyMemberDeclarations/accessibilityModifiers.ts(40,13): error TS1028: Accessibility modifier already seen.
tests/cases/conformance/classes/propertyMemberDeclarations/accessibilityModifiers.ts(40,20): error TS1028: Accessibility modifier already seen.
tests/cases/conformance/classes/propertyMemberDeclarations/accessibilityModifiers.ts(41,12): error TS1028: Accessibility modifier already seen.
tests/cases/conformance/classes/propertyMemberDeclarations/accessibilityModifiers.ts(42,13): error TS1028: Accessibility modifier already seen.
tests/cases/conformance/classes/propertyMemberDeclarations/accessibilityModifiers.ts(43,12): error TS1028: Accessibility modifier already seen.


==== tests/cases/conformance/classes/propertyMemberDeclarations/accessibilityModifiers.ts (17 errors) ====

// No errors
class C {
private static privateProperty;
private static privateMethod() { }
private static get privateGetter() { return 0; }
private static set privateSetter(a: number) { }

protected static protectedProperty;
protected static protectedMethod() { }
protected static get protectedGetter() { return 0; }
protected static set protectedSetter(a: number) { }

public static publicProperty;
public static publicMethod() { }
public static get publicGetter() { return 0; }
public static set publicSetter(a: number) { }
}

// Errors, accessibility modifiers must precede static
class D {
static private privateProperty;
~~~~~~~
!!! error TS1029: 'private' modifier must precede 'static' modifier.
static private privateMethod() { }
~~~~~~~
!!! error TS1029: 'private' modifier must precede 'static' modifier.
static private get privateGetter() { return 0; }
~~~~~~~
!!! error TS1029: 'private' modifier must precede 'static' modifier.
static private set privateSetter(a: number) { }
~~~~~~~
!!! error TS1029: 'private' modifier must precede 'static' modifier.

static protected protectedProperty;
~~~~~~~~~
!!! error TS1029: 'protected' modifier must precede 'static' modifier.
static protected protectedMethod() { }
~~~~~~~~~
!!! error TS1029: 'protected' modifier must precede 'static' modifier.
static protected get protectedGetter() { return 0; }
~~~~~~~~~
!!! error TS1029: 'protected' modifier must precede 'static' modifier.
static protected set protectedSetter(a: number) { }
~~~~~~~~~
!!! error TS1029: 'protected' modifier must precede 'static' modifier.

static public publicProperty;
~~~~~~
!!! error TS1029: 'public' modifier must precede 'static' modifier.
static public publicMethod() { }
~~~~~~
!!! error TS1029: 'public' modifier must precede 'static' modifier.
static public get publicGetter() { return 0; }
~~~~~~
!!! error TS1029: 'public' modifier must precede 'static' modifier.
static public set publicSetter(a: number) { }
~~~~~~
!!! error TS1029: 'public' modifier must precede 'static' modifier.
}

// Errors, multiple accessibility modifier
class E {
private public protected property;
~~~~~~
!!! error TS1028: Accessibility modifier already seen.
~~~~~~~~~
!!! error TS1028: Accessibility modifier already seen.
public protected method() { }
~~~~~~~~~
!!! error TS1028: Accessibility modifier already seen.
private protected get getter() { return 0; }
~~~~~~~~~
!!! error TS1028: Accessibility modifier already seen.
public public set setter(a: number) { }
~~~~~~
!!! error TS1028: Accessibility modifier already seen.
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
tests/cases/conformance/classes/propertyMemberDeclarations/memberAccessorDeclarations/accessorWithMismatchedAccessibilityModifiers.ts(3,9): error TS2379: Getter and setter accessors do not agree in visibility.
tests/cases/conformance/classes/propertyMemberDeclarations/memberAccessorDeclarations/accessorWithMismatchedAccessibilityModifiers.ts(6,17): error TS2379: Getter and setter accessors do not agree in visibility.
tests/cases/conformance/classes/propertyMemberDeclarations/memberAccessorDeclarations/accessorWithMismatchedAccessibilityModifiers.ts(11,19): error TS2379: Getter and setter accessors do not agree in visibility.
tests/cases/conformance/classes/propertyMemberDeclarations/memberAccessorDeclarations/accessorWithMismatchedAccessibilityModifiers.ts(14,17): error TS2379: Getter and setter accessors do not agree in visibility.
tests/cases/conformance/classes/propertyMemberDeclarations/memberAccessorDeclarations/accessorWithMismatchedAccessibilityModifiers.ts(19,19): error TS2379: Getter and setter accessors do not agree in visibility.
tests/cases/conformance/classes/propertyMemberDeclarations/memberAccessorDeclarations/accessorWithMismatchedAccessibilityModifiers.ts(21,9): error TS2379: Getter and setter accessors do not agree in visibility.
tests/cases/conformance/classes/propertyMemberDeclarations/memberAccessorDeclarations/accessorWithMismatchedAccessibilityModifiers.ts(27,26): error TS2379: Getter and setter accessors do not agree in visibility.
tests/cases/conformance/classes/propertyMemberDeclarations/memberAccessorDeclarations/accessorWithMismatchedAccessibilityModifiers.ts(29,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;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
//// [accessorWithMismatchedAccessibilityModifiers.ts]

class C {
get x() {
return 1;
}
private set x(v) {
}
}

class D {
protected get x() {
return 1;
}
private set x(v) {
}
}

class E {
protected set x(v) {
}
get x() {
return 1;
}
}

class F {
protected static set x(v) {
}
static get x() {
return 1;
}
}

//// [accessorWithMismatchedAccessibilityModifiers.js]
var C = (function () {
function C() {
}
Object.defineProperty(C.prototype, "x", {
get: function () {
return 1;
},
set: function (v) {
},
enumerable: true,
configurable: true
});
return C;
})();
var D = (function () {
function D() {
}
Object.defineProperty(D.prototype, "x", {
get: function () {
return 1;
},
set: function (v) {
},
enumerable: true,
configurable: true
});
return D;
})();
var E = (function () {
function E() {
}
Object.defineProperty(E.prototype, "x", {
get: function () {
return 1;
},
set: function (v) {
},
enumerable: true,
configurable: true
});
return E;
})();
var F = (function () {
function F() {
}
Object.defineProperty(F, "x", {
get: function () {
return 1;
},
set: function (v) {
},
enumerable: true,
configurable: true
});
return F;
})();
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
tests/cases/conformance/classes/constructorDeclarations/classConstructorParametersAccessibility.ts(12,1): error TS2341: Property 'p' is private and only accessible within class 'C2'.
tests/cases/conformance/classes/constructorDeclarations/classConstructorParametersAccessibility.ts(19,1): error TS2445: Property 'p' is protected and only accessible within class 'C3' and its subclasses.


==== tests/cases/conformance/classes/constructorDeclarations/classConstructorParametersAccessibility.ts (2 errors) ====
class C1 {
constructor(public x: number) { }
}
var c1: C1;
c1.x // OK


class C2 {
constructor(private p: number) { }
}
var c2: C2;
c2.p // private, error
~~~~
!!! error TS2341: Property 'p' is private and only accessible within class 'C2'.


class C3 {
constructor(protected p: number) { }
}
var c3: C3;
c3.p // protected, error
~~~~
!!! error TS2445: Property 'p' is protected and only accessible within class 'C3' and its subclasses.
class Derived extends C3 {
constructor(p: number) {
super(p);
this.p; // OK
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
//// [classConstructorParametersAccessibility.ts]
class C1 {
constructor(public x: number) { }
}
var c1: C1;
c1.x // OK


class C2 {
constructor(private p: number) { }
}
var c2: C2;
c2.p // private, error


class C3 {
constructor(protected p: number) { }
}
var c3: C3;
c3.p // protected, error
class Derived extends C3 {
constructor(p: number) {
super(p);
this.p; // OK
}
}


//// [classConstructorParametersAccessibility.js]
var __extends = this.__extends || function (d, b) {
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
function __() { this.constructor = d; }
__.prototype = b.prototype;
d.prototype = new __();
};
var C1 = (function () {
function C1(x) {
this.x = x;
}
return C1;
})();
var c1;
c1.x; // OK
var C2 = (function () {
function C2(p) {
this.p = p;
}
return C2;
})();
var c2;
c2.p; // private, error
var C3 = (function () {
function C3(p) {
this.p = p;
}
return C3;
})();
var c3;
c3.p; // protected, error
var Derived = (function (_super) {
__extends(Derived, _super);
function Derived(p) {
_super.call(this, p);
this.p; // OK
}
return Derived;
})(C3);
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
tests/cases/conformance/classes/constructorDeclarations/classConstructorParametersAccessibility2.ts(12,1): error TS2341: Property 'p' is private and only accessible within class 'C2'.
tests/cases/conformance/classes/constructorDeclarations/classConstructorParametersAccessibility2.ts(19,1): error TS2445: Property 'p' is protected and only accessible within class 'C3' and its subclasses.


==== tests/cases/conformance/classes/constructorDeclarations/classConstructorParametersAccessibility2.ts (2 errors) ====
class C1 {
constructor(public x?: number) { }
}
var c1: C1;
c1.x // OK


class C2 {
constructor(private p?: number) { }
}
var c2: C2;
c2.p // private, error
~~~~
!!! error TS2341: Property 'p' is private and only accessible within class 'C2'.


class C3 {
constructor(protected p?: number) { }
}
var c3: C3;
c3.p // protected, error
~~~~
!!! error TS2445: Property 'p' is protected and only accessible within class 'C3' and its subclasses.
class Derived extends C3 {
constructor(p: number) {
super(p);
this.p; // OK
}
}

Loading