| OLD | NEW |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
| 2 // Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. | 2 // Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. |
| 3 // | 3 // |
| 4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without |
| 5 // modification, are permitted provided that the following conditions | 5 // modification, are permitted provided that the following conditions |
| 6 // are met: | 6 // are met: |
| 7 // 1. Redistributions of source code must retain the above copyright | 7 // 1. Redistributions of source code must retain the above copyright |
| 8 // notice, this list of conditions and the following disclaimer. | 8 // notice, this list of conditions and the following disclaimer. |
| 9 // 2. Redistributions in binary form must reproduce the above copyright | 9 // 2. Redistributions in binary form must reproduce the above copyright |
| 10 // notice, this list of conditions and the following disclaimer in the | 10 // notice, this list of conditions and the following disclaimer in the |
| 11 // documentation and/or other materials provided with the distribution. | 11 // documentation and/or other materials provided with the distribution. |
| 12 // | 12 // |
| 13 // THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND AN
Y | 13 // THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND AN
Y |
| 14 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | 14 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
| 15 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | 15 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| 16 // DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR AN
Y | 16 // DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR AN
Y |
| 17 // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | 17 // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
| 18 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | 18 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
| 19 // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND O
N | 19 // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND O
N |
| 20 // ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 20 // ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 21 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | 21 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
| 22 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 22 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 23 | 23 |
| 24 function isReserved(word) | 24 function isReserved(word) |
| 25 { | 25 { |
| 26 try { | 26 try { |
| 27 eval("var " + word + ";"); | 27 eval("\"use strict\";var " + word + ";"); |
| 28 return false; | 28 return false; |
| 29 } catch (e) { | 29 } catch (e) { |
| 30 return true; | 30 var expectedError = "Use of reserved word '" + word + "' in strict m
ode"; |
| 31 if (expectedError == e.message) |
| 32 return true; |
| 33 else |
| 34 return false; |
| 31 } | 35 } |
| 32 } | 36 } |
| 33 | 37 |
| 34 var reservedWords = [ | 38 var reservedWords = [ |
| 35 "break", | 39 "implements", |
| 36 "case", | 40 "let", |
| 37 "catch", | 41 "private", |
| 38 "class", | 42 "public", |
| 39 "const", | 43 "yield", |
| 40 "continue", | 44 "interface", |
| 41 "debugger", | 45 "package", |
| 42 "default", | 46 "protected", |
| 43 "delete", | 47 "static" |
| 44 "do", | |
| 45 "else", | |
| 46 "enum", | |
| 47 "export", | |
| 48 "extends", | |
| 49 "false", | |
| 50 "finally", | |
| 51 "for", | |
| 52 "function", | |
| 53 "if", | |
| 54 "import", | |
| 55 "in", | |
| 56 "instanceof", | |
| 57 "new", | |
| 58 "null", | |
| 59 "return", | |
| 60 "super", | |
| 61 "switch", | |
| 62 "this", | |
| 63 "throw", | |
| 64 "true", | |
| 65 "try", | |
| 66 "typeof", | |
| 67 "var", | |
| 68 "void", | |
| 69 "while", | |
| 70 "with" | |
| 71 ]; | 48 ]; |
| 72 | 49 |
| 73 var unreservedWords = [ | 50 var unreservedWords = [ |
| 74 "abstract", | 51 "abstract", |
| 75 "boolean", | 52 "boolean", |
| 76 "byte", | 53 "byte", |
| 77 "char", | 54 "char", |
| 78 "double", | 55 "double", |
| 79 "final", | 56 "final", |
| 80 "float", | 57 "float", |
| 81 "goto", | 58 "goto", |
| 82 "implements", | |
| 83 "int", | 59 "int", |
| 84 "interface", | |
| 85 "long", | 60 "long", |
| 86 "native", | 61 "native", |
| 87 "package", | |
| 88 "private", | |
| 89 "protected", | |
| 90 "public", | |
| 91 "short", | 62 "short", |
| 92 "static", | |
| 93 "synchronized", | 63 "synchronized", |
| 94 "throws", | 64 "throws", |
| 95 "transient", | 65 "transient", |
| 96 "volatile" | 66 "volatile" |
| 97 ]; | 67 ]; |
| 98 | 68 |
| 99 description( | 69 description( |
| 100 "This file checks which ECMAScript 3 keywords are treated as reserved words." | 70 "This file checks which ECMAScript 3 keywords are treated as reserved words in s
trict mode." |
| 101 ); | 71 ); |
| 102 | 72 |
| 103 reservedWords.sort(); | 73 reservedWords.sort(); |
| 104 unreservedWords.sort(); | 74 unreservedWords.sort(); |
| 105 | 75 |
| 106 debug("SHOULD BE RESERVED:"); | 76 debug("SHOULD BE RESERVED:"); |
| 107 for (var p in reservedWords) { | 77 for (var p in reservedWords) { |
| 108 shouldBeTrue("isReserved('" + reservedWords[p] + "')"); | 78 shouldBeTrue("isReserved('" + reservedWords[p] + "')"); |
| 109 } | 79 } |
| 110 | 80 |
| 111 debug(""); | 81 debug(""); |
| 112 | 82 |
| 113 debug("SHOULD NOT BE RESERVED:"); | 83 debug("SHOULD NOT BE RESERVED:"); |
| 114 for (var p in unreservedWords) { | 84 for (var p in unreservedWords) { |
| 115 shouldBeFalse("isReserved('" + unreservedWords[p] + "')"); | 85 shouldBeFalse("isReserved('" + unreservedWords[p] + "')"); |
| 116 } | 86 } |
| 117 | 87 |
| 118 debug(""); | 88 debug(""); |
| OLD | NEW |