1 // Copyright 2013 the V8 project authors. All rights reserved. 2 // Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. 3 // 4 // Redistribution and use in source and binary forms, with or without 5 // modification, are permitted provided that the following conditions 6 // are met: 7 // 1. Redistributions of source code must retain the above copyright 8 // notice, this list of conditions and the following disclaimer. 9 // 2. Redistributions in binary form must reproduce the above copyright 10 // notice, this list of conditions and the following disclaimer in the 11 // documentation and/or other materials provided with the distribution. 12 // 13 // THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY 14 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 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 ANY 17 // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 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 ON 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 22 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 24 function isReserved(word) 25 { 26 try { 27 eval("var " + word + ";"); 28 return false; 29 } catch (e) { 30 return true; 31 } 32 } 33 34 var reservedWords = [ 35 "break", 36 "case", 37 "catch", 38 "class", 39 "const", 40 "continue", 41 "debugger", 42 "default", 43 "delete", 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 ]; 72 73 var unreservedWords = [ 74 "abstract", 75 "boolean", 76 "byte", 77 "char", 78 "double", 79 "final", 80 "float", 81 "goto", 82 "implements", 83 "int", 84 "interface", 85 "long", 86 "native", 87 "package", 88 "private", 89 "protected", 90 "public", 91 "short", 92 "static", 93 "synchronized", 94 "throws", 95 "transient", 96 "volatile" 97 ]; 98 99 description( 100 "This file checks which ECMAScript 3 keywords are treated as reserved words." 101 ); 102 103 reservedWords.sort(); 104 unreservedWords.sort(); 105 106 debug("SHOULD BE RESERVED:"); 107 for (var p in reservedWords) { 108 shouldBeTrue("isReserved('" + reservedWords[p] + "')"); 109 } 110 111 debug(""); 112 113 debug("SHOULD NOT BE RESERVED:"); 114 for (var p in unreservedWords) { 115 shouldBeFalse("isReserved('" + unreservedWords[p] + "')"); 116 } 117 118 debug(""); 119