| // Copyright 2013 the V8 project authors. All rights reserved. | |
| // Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. | |
| // | |
| // Redistribution and use in source and binary forms, with or without | |
| // modification, are permitted provided that the following conditions | |
| // are met: | |
| // 1. Redistributions of source code must retain the above copyright | |
| // notice, this list of conditions and the following disclaimer. | |
| // 2. Redistributions in binary form must reproduce the above copyright | |
| // notice, this list of conditions and the following disclaimer in the | |
| // documentation and/or other materials provided with the distribution. | |
| // | |
| // THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY | |
| // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |
| // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |
| // DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY | |
| // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | |
| // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |
| // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON | |
| // ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | |
| // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
| function isReserved(word) | |
| { | |
| try { | |
| eval("var " + word + ";"); | |
| return false; | |
| } catch (e) { | |
| return true; | |
| } | |
| } | |
| var reservedWords = [ | |
| "break", | |
| "case", | |
| "catch", | |
| "class", | |
| "const", | |
| "continue", | |
| "debugger", | |
| "default", | |
| "delete", | |
| "do", | |
| "else", | |
| "enum", | |
| "export", | |
| "extends", | |
| "false", | |
| "finally", | |
| "for", | |
| "function", | |
| "if", | |
| "import", | |
| "in", | |
| "instanceof", | |
| "new", | |
| "null", | |
| "return", | |
| "super", | |
| "switch", | |
| "this", | |
| "throw", | |
| "true", | |
| "try", | |
| "typeof", | |
| "var", | |
| "void", | |
| "while", | |
| "with" | |
| ]; | |
| var unreservedWords = [ | |
| "abstract", | |
| "boolean", | |
| "byte", | |
| "char", | |
| "double", | |
| "final", | |
| "float", | |
| "goto", | |
| "implements", | |
| "int", | |
| "interface", | |
| "long", | |
| "native", | |
| "package", | |
| "private", | |
| "protected", | |
| "public", | |
| "short", | |
| "static", | |
| "synchronized", | |
| "throws", | |
| "transient", | |
| "volatile" | |
| ]; | |
| description( | |
| "This file checks which ECMAScript 3 keywords are treated as reserved words." | |
| ); | |
| 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(""); |