Skip to content

Commit ff5b850

Browse files
author
Esben Sparre Andreasen
committed
JS: add tests
1 parent 6a555d0 commit ff5b850

File tree

3 files changed

+58
-3
lines changed

3 files changed

+58
-3
lines changed

javascript/ql/test/query-tests/Declarations/DeadStoreOfProperty/DeadStoreOfProperty.expected

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,6 @@
1212
| tst.js:76:5:76:34 | o.pure1 ... te = 42 | This write to property 'pure16_simpleAliasWrite' is useless, since $@ always overrides it. | tst.js:77:5:77:36 | o16.pur ... te = 42 | another property write |
1313
| tst.js:95:5:95:17 | o.pure18 = 42 | This write to property 'pure18' is useless, since $@ always overrides it. | tst.js:96:5:96:17 | o.pure18 = 42 | another property write |
1414
| tst.js:96:5:96:17 | o.pure18 = 42 | This write to property 'pure18' is useless, since $@ always overrides it. | tst.js:97:5:97:17 | o.pure18 = 42 | another property write |
15+
| tst.js:100:2:102:3 | Object. ... { }\\n\\t}) | This write to property 'setter' is useless, since $@ always overrides it. | tst.js:103:2:103:14 | o.setter = "" | another property write |
16+
| tst.js:114:2:114:14 | o.setter = 42 | This write to property 'setter' is useless, since $@ always overrides it. | tst.js:115:2:115:14 | o.setter = 87 | another property write |
17+
| tst.js:122:2:122:78 | Object. ... le:!1}) | This write to property 'prop' is useless, since $@ always overrides it. | tst.js:123:2:123:12 | o.prop = 42 | another property write |

javascript/ql/test/query-tests/Declarations/DeadStoreOfProperty/tst.js

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,17 +82,47 @@
8282
}
8383

8484
// DOM
85-
o.clientTop = 42;
85+
o.clientTop = 42; // OK
8686
o.clientTop = 42;
8787

88-
o.defaulted1 = null;
88+
o.defaulted1 = null; // OK
8989
o.defaulted1 = 42;
9090

91-
o.defaulted2 = -1;
91+
o.defaulted2 = -1; // OK
9292
o.defaulted2 = 42;
9393

9494
var o = {};
9595
o.pure18 = 42; // NOT OK
9696
o.pure18 = 42; // NOT OK
9797
o.pure18 = 42;
98+
99+
var o = {};
100+
Object.defineProperty(o, "setter", { // OK
101+
set: function (value) { }
102+
});
103+
o.setter = "";
104+
105+
var o = { set setter(value) { } }; // OK
106+
o.setter = "";
107+
108+
var o = {
109+
set accessor(value) { }, // OK
110+
get accessor() { }
111+
};
112+
113+
var o = { set setter(value) { } };
114+
o.setter = 42; // probably OK, but still flagged - it seems fishy
115+
o.setter = 87;
116+
117+
var o = {};
118+
Object.defineProperty(o, "prop", {writable:!0,configurable:!0,enumerable:!1, value: getInitialValue()}) // NOT OK
119+
o.prop = 42;
120+
121+
var o = {};
122+
Object.defineProperty(o, "prop", {writable:!0,configurable:!0,enumerable:!1, value: undefined}) // OK, default value
123+
o.prop = 42;
124+
125+
var o = {};
126+
Object.defineProperty(o, "prop", {writable:!0,configurable:!0,enumerable:!1}) // OK
127+
o.prop = 42;
98128
});

javascript/ql/test/query-tests/Expressions/ExprHasNoEffect/tst.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,3 +51,25 @@ try {
5151
new Error(computeSnarkyMessage(e)); // NOT OK
5252
new UnknownError(); // OK
5353
}
54+
55+
function g() {
56+
var o = {};
57+
58+
Object.defineProperty(o, "trivialGetter1", { get: function(){} });
59+
o.trivialGetter1; // OK
60+
61+
Object.defineProperty(o, "trivialNonGetter1", "foo");
62+
o.trivialNonGetter1; // NOT OK
63+
64+
var getterDef1 = { get: function(){} };
65+
Object.defineProperty(o, "nonTrivialGetter1", getterDef1);
66+
o.nonTrivialGetter1; // OK
67+
68+
var getterDef2 = { };
69+
unknownPrepareGetter(getterDef2);
70+
Object.defineProperty(o, "nonTrivialNonGetter1", getterDef2);
71+
o.nonTrivialNonGetter1; // OK
72+
73+
Object.defineProperty(o, "nonTrivialGetter2", unknownGetterDef());
74+
o.nonTrivialGetter2; // OK
75+
};

0 commit comments

Comments
 (0)