1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
function isReserved(word)
{
try {
eval("\"use strict\";var " + word + ";");
return false;
} catch (e) {
var expectedError = "Use of reserved word '" + word + "' in strict mode";
if (expectedError == e.message)
return true;
else
return false;
}
}
var reservedWords = [
"implements",
"private",
"public",
"yield",
"interface",
"package",
"protected",
"static"
];
var unreservedWords = [
"abstract",
"boolean",
"byte",
"char",
"double",
"final",
"float",
"goto",
"int",
"long",
"native",
"short",
"synchronized",
"throws",
"transient",
"volatile"
];
description(
"This file checks which ECMAScript 3 keywords are treated as reserved words in strict mode."
);
reservedWords.sort();
unreservedWords.sort();
debug("SHOULD BE RESERVED:");
for (var p in reservedWords) {
shouldBeTrue("isReserved('" + reservedWords[p] + "')");
}
debug("");
debug("SHOULD NOT BE RESERVED:");
for (var p in unreservedWords) {
shouldBeFalse("isReserved('" + unreservedWords[p] + "')");
}
debug("");
|