Further runtime error work... expose many new errors as catchable

exceptions.  Mostly syntax errors, so far.  Fixed missing #if
JS_HAS_ERROR_EXCEPTIONS
This commit is contained in:
mccabe%netscape.com 1998-08-31 09:49:43 +00:00
Родитель 38dfa16122
Коммит 6e240ffb5b
5 изменённых файлов: 154 добавлений и 154 удалений

Просмотреть файл

@ -1413,7 +1413,8 @@ Function(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
n = argc ? argc - 1 : 0;
if (n > 0) {
/* Collect the function-argument arguments into one string, separated
/*
* Collect the function-argument arguments into one string, separated
* by commas, then make a tokenstream from that string, and scan it to
* get the arguments. We need to throw the full scanner at the
* problem, because the argument string can legitimately contain
@ -1431,7 +1432,8 @@ Function(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
/* Add 1 for each joining comma. */
args_length += n - 1;
/* Allocate a string to hold the concatenated arguments, including room
/*
* Allocate a string to hold the concatenated arguments, including room
* for a terminating 0.
*/
cp = collected_args = (jschar *) JS_malloc(cx, (args_length + 1) *
@ -1457,14 +1459,16 @@ Function(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
/* The argument string may be empty or contain no tokens. */
if (tt != TOK_EOF) {
while (1) {
/* Check that it's a name. This also implicitly guards against
/*
* Check that it's a name. This also implicitly guards against
* TOK_ERROR.
*/
if (tt != TOK_NAME) {
JS_ReportErrorNumber(cx, NULL, JSMSG_NO_FORMAL);
goto badargs;
}
/* Get the atom corresponding to the name from the tokenstream;
/*
* Get the atom corresponding to the name from the tokenstream;
* we're assured at this point that it's a valid identifier.
*/
atom = ts->token.t_atom;
@ -1476,11 +1480,12 @@ Function(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
#ifdef CHECK_ARGUMENT_HIDING
PR_ASSERT(sprop->getter == js_GetArgument);
OBJ_DROP_PROPERTY(cx, obj2, (JSProperty *)sprop);
JS_ReportErrorNumber(cx, NULL, JSMSG_SAME_FORMAL,
JS_ReportErrorNumber(cx, JSREPORT_WARNING, JSMSG_SAME_FORMAL,
ATOM_BYTES(atom));
goto badargs;
#else
/* A duplicate parameter name. We create a dummy symbol
/*
* A duplicate parameter name. We create a dummy symbol
* entry with property id of the parameter number and set
* the id to the name of the parameter.
* The decompiler will know to treat this case specially.
@ -1515,7 +1520,8 @@ Function(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if (tt == TOK_EOF)
break;
/* If a comma is seen, get the next token. Otherwise, let the
/*
* If a comma is seen, get the next token. Otherwise, let the
* loop catch the error.
*/
if (tt == TOK_COMMA)
@ -1558,7 +1564,8 @@ Function(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
js_CloseTokenStream(cx, ts);
badargs:
/* Clean up the arguments string and tokenstream if we failed to parse
/*
* Clean up the arguments string and tokenstream if we failed to parse
* the arguments.
*/
JS_free(cx, collected_args);
@ -1729,8 +1736,9 @@ js_ReportIsNotFunction(JSContext *cx, jsval *vp, JSBool constructing)
if (fp)
fp->sp = sp;
if (str) {
JS_ReportErrorNumber(cx, NULL, JSMSG_DENY,
JS_GetStringBytes(str),
constructing ? "constructor" : "function");
JS_ReportErrorNumber(cx, NULL,
constructing ? JSMSG_NOT_CONSTRUCTOR
: JSMSG_NOT_FUNCTION,
JS_GetStringBytes(str));
}
}

Просмотреть файл

@ -2644,8 +2644,8 @@ js_Interpret(JSContext *cx, jsval *result)
if (JSVAL_IS_PRIMITIVE(rval)) {
str = js_DecompileValueGenerator(cx, rval, NULL);
if (str) {
JS_ReportErrorNumber(cx, NULL, JSMSG_BAD_OPERANDS,
js_instanceof_str, JS_GetStringBytes(str));
JS_ReportErrorNumber(cx, NULL, JSMSG_BAD_INSTANCEOF_RHS,
JS_GetStringBytes(str));
}
ok = JS_FALSE;

Просмотреть файл

@ -1,19 +1,5 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
/* -*- Mode: C; tab-width: 8 -*-
* Copyright (C) 1998 Netscape Communications Corporation, All Rights Reserved.
*/
/*
This is the JavaScript error message file.
@ -76,123 +62,127 @@ MSG_DEF(JSMSG_STACK_UNDERFLOW, 17, 2, JSEXN_NONE, "internal error compil
MSG_DEF(JSMSG_NEED_DIET, 18, 1, JSEXN_NONE, "{0} too large")
MSG_DEF(JSMSG_BAD_CASE, 19, 2, JSEXN_NONE, "{0}, line {1}: invalid case expression")
MSG_DEF(JSMSG_READ_ONLY, 20, 1, JSEXN_NONE, "{0} is read-only")
MSG_DEF(JSMSG_NO_FORMAL, 21, 0, JSEXN_NONE, "missing formal parameter")
MSG_DEF(JSMSG_SAME_FORMAL, 22, 1, JSEXN_NONE, "duplicate formal argument {0}")
MSG_DEF(JSMSG_DENY, 23, 2, JSEXN_NONE, "{0} is not a {1}")
MSG_DEF(JSMSG_STACK_OVERFLOW, 24, 1, JSEXN_NONE, "stack overflow in {0}")
MSG_DEF(JSMSG_NOT_EXPORTED, 25, 1, JSEXN_NONE, "{0} is not exported")
MSG_DEF(JSMSG_OVER_RECURSED, 26, 0, JSEXN_NONE, "too much recursion")
MSG_DEF(JSMSG_IN_NOT_OBJECT, 27, 0, JSEXN_NONE, "target of 'in' operator must be an object")
MSG_DEF(JSMSG_BAD_NEW_RESULT, 28, 1, JSEXN_NONE, "invalid new expression result {0}")
MSG_DEF(JSMSG_BAD_SHARP_DEF, 29, 1, JSEXN_NONE, "invalid sharp variable definition #{0}=")
MSG_DEF(JSMSG_BAD_SHARP_USE, 30, 1, JSEXN_NONE, "invalid sharp variable use #{0}#")
MSG_DEF(JSMSG_BAD_OPERANDS, 31, 2, JSEXN_NONE, "invalid {0} operand {1}")
MSG_DEF(JSMSG_BAD_BYTECODE, 32, 1, JSEXN_NONE, "unimplemented JavaScript bytecode {0}")
MSG_DEF(JSMSG_BAD_RADIX, 33, 1, JSEXN_NONE, "illegal radix {0}")
MSG_DEF(JSMSG_NAN, 34, 1, JSEXN_NONE, "{0} is not a number")
MSG_DEF(JSMSG_CANT_CONVERT, 35, 1, JSEXN_NONE, "can't convert {0} to an integer")
MSG_DEF(JSMSG_CYCLIC_VALUE, 36, 1, JSEXN_NONE, "cyclic {0} value")
MSG_DEF(JSMSG_PERMANENT, 37, 1, JSEXN_NONE, "{0} is permanent")
MSG_DEF(JSMSG_CANT_CONVERT_TO, 38, 2, JSEXN_NONE, "can't convert {0} to {1}")
MSG_DEF(JSMSG_NO_PROPERTIES, 39, 1, JSEXN_NONE, "{0} has no properties")
MSG_DEF(JSMSG_CANT_FIND_CLASS, 40, 1, JSEXN_NONE, "can't find class id {0}")
MSG_DEF(JSMSG_CANT_XDR_CLASS, 41, 1, JSEXN_NONE, "can't XDR class {0}")
MSG_DEF(JSMSG_BYTECODE_TOO_BIG, 42, 2, JSEXN_NONE, "bytecode {0} too large (limit {1})")
MSG_DEF(JSMSG_UNKNOWN_FORMAT, 43, 1, JSEXN_NONE, "unknown bytecode format {0}")
MSG_DEF(JSMSG_TOO_MANY_CON_ARGS, 44, 0, JSEXN_NONE, "too many constructor arguments")
MSG_DEF(JSMSG_TOO_MANY_FUN_ARGS, 45, 0, JSEXN_NONE, "too many function arguments")
MSG_DEF(JSMSG_BAD_QUANTIFIER, 46, 1, JSEXN_NONE, "invalid quantifier {0}")
MSG_DEF(JSMSG_MIN_TOO_BIG, 47, 1, JSEXN_NONE, "overlarge minimum {0}")
MSG_DEF(JSMSG_MAX_TOO_BIG, 48, 1, JSEXN_NONE, "overlarge maximum {0}")
MSG_DEF(JSMSG_OUT_OF_ORDER, 49, 1, JSEXN_NONE, "maximum {0} less than minimum")
MSG_DEF(JSMSG_ZERO_QUANTIFIER, 50, 1, JSEXN_NONE, "zero quantifier {0}")
MSG_DEF(JSMSG_UNTERM_QUANTIFIER, 51, 1, JSEXN_NONE, "unterminated quantifier {0}")
MSG_DEF(JSMSG_EMPTY_BEFORE_STAR, 52, 0, JSEXN_NONE, "regular expression before * could be empty")
MSG_DEF(JSMSG_EMPTY_BEFORE_PLUS, 53, 0, JSEXN_NONE, "regular expression before + could be empty")
MSG_DEF(JSMSG_MISSING_PAREN, 54, 1, JSEXN_NONE, "unterminated parenthetical {0}")
MSG_DEF(JSMSG_UNTERM_CLASS, 55, 1, JSEXN_NONE, "unterminated character class {0}")
MSG_DEF(JSMSG_TRAILING_SLASH, 56, 0, JSEXN_NONE, "trailing \\ in regular expression")
MSG_DEF(JSMSG_BAD_CLASS_RANGE, 57, 0, JSEXN_NONE, "invalid range in character class")
MSG_DEF(JSMSG_BAD_FLAG, 58, 1, JSEXN_NONE, "invalid regular expression flag {0}")
MSG_DEF(JSMSG_NO_INPUT, 59, 3, JSEXN_NONE, "no input for /{0}/{1}{2}")
MSG_DEF(JSMSG_CANT_OPEN, 60, 2, JSEXN_NONE, "can't open {0}: {1}")
MSG_DEF(JSMSG_BAD_STRING_MASK, 61, 1, JSEXN_NONE, "invalid string escape mask {0}")
MSG_DEF(JSMSG_NO_STRING_PROTO, 62, 1, JSEXN_NONE, "sorry, String.prototype.{0} is not yet implemented")
MSG_DEF(JSMSG_END_OF_DATA, 63, 0, JSEXN_NONE, "unexpected end of data")
MSG_DEF(JSMSG_SEEK_BEYOND_START, 64, 0, JSEXN_NONE, "illegal seek beyond start")
MSG_DEF(JSMSG_SEEK_BEYOND_END, 65, 0, JSEXN_NONE, "illegal seek beyond end")
MSG_DEF(JSMSG_END_SEEK, 66, 0, JSEXN_NONE, "illegal end-based seek")
MSG_DEF(JSMSG_WHITHER_WHENCE, 67, 1, JSEXN_NONE, "unknown seek whence: {0}")
MSG_DEF(JSMSG_BAD_JVAL_TYPE, 68, 1, JSEXN_NONE, "unknown jsval type {0} for XDR")
MSG_DEF(JSMSG_TRAP_USAGE, 69, 0, JSEXN_NONE, "usage: trap [fun] [pc] expr")
MSG_DEF(JSMSG_LINE2PC_USAGE, 70, 0, JSEXN_NONE, "usage: line2pc [fun] line")
MSG_DEF(JSMSG_FILE_SCRIPTS_ONLY, 71, 0, JSEXN_NONE, "only works on JS scripts read from files")
MSG_DEF(JSMSG_UNEXPECTED_EOF, 72, 1, JSEXN_NONE, "unexpected EOF in {0}")
MSG_DEF(JSMSG_DOEXP_USAGE, 73, 0, JSEXN_NONE, "usage: doexp obj id")
MSG_DEF(JSMSG_PAREN_BEFORE_FORMAL, 74, 0, JSEXN_NONE, "missing ( before formal parameters")
MSG_DEF(JSMSG_MISSING_FORMAL, 75, 0, JSEXN_NONE, "missing formal parameter")
MSG_DEF(JSMSG_PAREN_AFTER_FORMAL, 76, 0, JSEXN_NONE, "missing ) after formal parameters")
MSG_DEF(JSMSG_CURLY_BEFORE_BODY, 77, 0, JSEXN_NONE, "missing { before function body")
MSG_DEF(JSMSG_CURLY_AFTER_BODY, 78, 0, JSEXN_NONE, "missing } after function body")
MSG_DEF(JSMSG_PAREN_BEFORE_COND, 79, 0, JSEXN_NONE, "missing ( before condition")
MSG_DEF(JSMSG_PAREN_AFTER_COND, 80, 0, JSEXN_NONE, "missing ) after condition")
MSG_DEF(JSMSG_NO_IMPORT_NAME, 81, 0, JSEXN_NONE, "missing name in import statement")
MSG_DEF(JSMSG_NAME_AFTER_DOT, 82, 0, JSEXN_NONE, "missing name after . operator")
MSG_DEF(JSMSG_BRACKET_IN_INDEX, 83, 0, JSEXN_NONE, "missing ] in index expression")
MSG_DEF(JSMSG_NO_EXPORT_NAME, 84, 0, JSEXN_NONE, "missing name in export statement")
MSG_DEF(JSMSG_PAREN_BEFORE_SWITCH, 85, 0, JSEXN_NONE, "missing ( before switch expression")
MSG_DEF(JSMSG_PAREN_AFTER_SWITCH, 86, 0, JSEXN_NONE, "missing ) after switch expression")
MSG_DEF(JSMSG_CURLY_BEFORE_SWITCH, 87, 0, JSEXN_NONE, "missing { before switch body")
MSG_DEF(JSMSG_COLON_AFTER_CASE, 88, 0, JSEXN_NONE, "missing : after case label")
MSG_DEF(JSMSG_WHILE_AFTER_DO, 89, 0, JSEXN_NONE, "missing while after do-loop body")
MSG_DEF(JSMSG_PAREN_AFTER_FOR, 90, 0, JSEXN_NONE, "missing ( after for")
MSG_DEF(JSMSG_SEMI_AFTER_FOR_INIT, 91, 0, JSEXN_NONE, "missing ; after for-loop initializer")
MSG_DEF(JSMSG_SEMI_AFTER_FOR_COND, 92, 0, JSEXN_NONE, "missing ; after for-loop condition")
MSG_DEF(JSMSG_PAREN_AFTER_FOR_CTRL, 93, 0, JSEXN_NONE, "missing ) after for-loop control")
MSG_DEF(JSMSG_CURLY_BEFORE_TRY, 94, 0, JSEXN_NONE, "missing { before try block")
MSG_DEF(JSMSG_CURLY_AFTER_TRY, 95, 0, JSEXN_NONE, "missing } after try block")
MSG_DEF(JSMSG_PAREN_BEFORE_CATCH, 96, 0, JSEXN_NONE, "missing ( before catch")
MSG_DEF(JSMSG_CATCH_IDENTIFIER, 97, 0, JSEXN_NONE, "missing identifier in catch")
MSG_DEF(JSMSG_PAREN_AFTER_CATCH, 98, 0, JSEXN_NONE, "missing ) after catch")
MSG_DEF(JSMSG_CURLY_BEFORE_CATCH, 99, 0, JSEXN_NONE, "missing { before catch block")
MSG_DEF(JSMSG_CURLY_AFTER_CATCH, 100, 0, JSEXN_NONE, "missing } after catch block")
MSG_DEF(JSMSG_CURLY_BEFORE_FINALLY, 101, 0, JSEXN_NONE, "missing { before finally block")
MSG_DEF(JSMSG_CURLY_AFTER_FINALLY, 102, 0, JSEXN_NONE, "missing } after finally block")
MSG_DEF(JSMSG_CATCH_OR_FINALLY, 103, 0, JSEXN_NONE, "missing catch or finally after try")
MSG_DEF(JSMSG_PAREN_BEFORE_WITH, 104, 0, JSEXN_NONE, "missing ( before with-statement object")
MSG_DEF(JSMSG_PAREN_AFTER_WITH, 105, 0, JSEXN_NONE, "missing ) after with-statement object")
MSG_DEF(JSMSG_CURLY_IN_COMPOUND, 106, 0, JSEXN_NONE, "missing } in compound statement")
MSG_DEF(JSMSG_NO_VARIABLE_NAME, 107, 0, JSEXN_NONE, "missing variable name")
MSG_DEF(JSMSG_COLON_IN_COND, 108, 0, JSEXN_NONE, "missing : in conditional expression")
MSG_DEF(JSMSG_PAREN_AFTER_ARGS, 109, 0, JSEXN_NONE, "missing ) after argument list")
MSG_DEF(JSMSG_BRACKET_AFTER_LIST, 110, 0, JSEXN_NONE, "missing ] after element list")
MSG_DEF(JSMSG_COLON_AFTER_ID, 111, 0, JSEXN_NONE, "missing : after property id")
MSG_DEF(JSMSG_CURLY_AFTER_LIST, 112, 0, JSEXN_NONE, "missing } after property list")
MSG_DEF(JSMSG_PAREN_IN_PAREN, 113, 0, JSEXN_NONE, "missing ) in parenthetical")
MSG_DEF(JSMSG_SEMI_BEFORE_STMNT, 114, 0, JSEXN_NONE, "missing ; before statement")
MSG_DEF(JSMSG_NO_RETURN_VALUE, 115, 0, JSEXN_NONE, "function does not always return a value")
MSG_DEF(JSMSG_DUPLICATE_FORMAL, 116, 1, JSEXN_NONE, "duplicate formal argument {0}")
MSG_DEF(JSMSG_EQUAL_AS_ASSIGN, 117, 1, JSEXN_NONE, "test for equality (==) mistyped as assignment (=)?{0}")
MSG_DEF(JSMSG_BAD_IMPORT, 118, 0, JSEXN_NONE, "invalid import expression")
MSG_DEF(JSMSG_TOO_MANY_DEFAULTS, 119, 0, JSEXN_NONE, "more than one switch default")
MSG_DEF(JSMSG_TOO_MANY_CASES, 120, 0, JSEXN_NONE, "too many switch cases")
MSG_DEF(JSMSG_BAD_SWITCH, 121, 0, JSEXN_NONE, "invalid switch statement")
MSG_DEF(JSMSG_BAD_FOR_LEFTSIDE, 122, 0, JSEXN_NONE, "invalid for/in left-hand side")
MSG_DEF(JSMSG_CATCH_AFTER_GENERAL, 123, 0, JSEXN_NONE, "catch clause after general catch")
MSG_DEF(JSMSG_CATCH_WITHOUT_TRY, 124, 0, JSEXN_NONE, "catch without try")
MSG_DEF(JSMSG_FINALLY_WITHOUT_TRY, 125, 0, JSEXN_NONE, "finally without try")
MSG_DEF(JSMSG_LABEL_NOT_FOUND, 126, 0, JSEXN_NONE, "label not found")
MSG_DEF(JSMSG_TOUGH_BREAK, 127, 0, JSEXN_NONE, "invalid break")
MSG_DEF(JSMSG_BAD_CONTINUE, 128, 0, JSEXN_NONE, "invalid continue")
MSG_DEF(JSMSG_BAD_RETURN, 129, 0, JSEXN_NONE, "invalid return")
MSG_DEF(JSMSG_BAD_LABEL, 130, 0, JSEXN_NONE, "invalid label")
MSG_DEF(JSMSG_DUPLICATE_LABEL, 131, 0, JSEXN_NONE, "duplicate label")
MSG_DEF(JSMSG_VAR_HIDES_ARG, 132, 1, JSEXN_NONE, "variable {0} hides argument")
MSG_DEF(JSMSG_BAD_VAR_INIT, 133, 0, JSEXN_NONE, "invalid variable initialization")
MSG_DEF(JSMSG_BAD_LEFTSIDE_OF_ASS, 134, 0, JSEXN_NONE, "invalid assignment left-hand side")
MSG_DEF(JSMSG_BAD_OPERAND, 135, 1, JSEXN_NONE, "invalid {0} operand")
MSG_DEF(JSMSG_BAD_PROP_ID, 136, 0, JSEXN_NONE, "invalid property id")
MSG_DEF(JSMSG_RESERVED_ID, 137, 1, JSEXN_NONE, "{0} is a reserved identifier")
MSG_DEF(JSMSG_SYNTAX_ERROR, 138, 0, JSEXN_NONE, "syntax error")
MSG_DEF(JSMSG_BAD_SHARP_VAR_DEF, 139, 0, JSEXN_NONE, "invalid sharp variable definition")
MSG_DEF(JSMSG_BAD_PROTOTYPE, 140, 1, JSEXN_NONE, "'prototype' property of {0} is not an object")
MSG_DEF(JSMSG_NO_FORMAL, 21, 0, JSEXN_SYNTAXERR, "missing formal parameter")
MSG_DEF(JSMSG_SAME_FORMAL, 22, 1, JSEXN_NONE, "duplicate formal argument {0}")
MSG_DEF(JSMSG_NOT_FUNCTION, 23, 1, JSEXN_CALLERR, "{0} is not a function")
MSG_DEF(JSMSG_NOT_CONSTRUCTOR, 24, 1, JSEXN_CONSTRUCTORERR, "{0} is not a constructor")
MSG_DEF(JSMSG_STACK_OVERFLOW, 25, 1, JSEXN_NONE, "stack overflow in {0}")
MSG_DEF(JSMSG_NOT_EXPORTED, 26, 1, JSEXN_NONE, "{0} is not exported")
MSG_DEF(JSMSG_OVER_RECURSED, 27, 0, JSEXN_NONE, "too much recursion")
MSG_DEF(JSMSG_IN_NOT_OBJECT, 28, 0, JSEXN_ERR, "target of 'in' operator must be an object")
MSG_DEF(JSMSG_BAD_NEW_RESULT, 29, 1, JSEXN_NONE, "invalid new expression result {0}")
MSG_DEF(JSMSG_BAD_SHARP_DEF, 30, 1, JSEXN_ERR, "invalid sharp variable definition #{0}=")
MSG_DEF(JSMSG_BAD_SHARP_USE, 31, 1, JSEXN_ERR, "invalid sharp variable use #{0}#")
MSG_DEF(JSMSG_BAD_INSTANCEOF_RHS, 32, 1, JSEXN_ERR, "invalid instanceof operand {0}")
MSG_DEF(JSMSG_BAD_BYTECODE, 33, 1, JSEXN_NONE, "unimplemented JavaScript bytecode {0}")
MSG_DEF(JSMSG_BAD_RADIX, 34, 1, JSEXN_NONE, "illegal radix {0}")
MSG_DEF(JSMSG_NAN, 35, 1, JSEXN_NONE, "{0} is not a number")
MSG_DEF(JSMSG_CANT_CONVERT, 36, 1, JSEXN_NONE, "can't convert {0} to an integer")
MSG_DEF(JSMSG_CYCLIC_VALUE, 37, 1, JSEXN_NONE, "cyclic {0} value")
MSG_DEF(JSMSG_PERMANENT, 38, 1, JSEXN_NONE, "{0} is permanent")
MSG_DEF(JSMSG_CANT_CONVERT_TO, 39, 2, JSEXN_NONE, "can't convert {0} to {1}")
MSG_DEF(JSMSG_NO_PROPERTIES, 40, 1, JSEXN_NONE, "{0} has no properties")
MSG_DEF(JSMSG_CANT_FIND_CLASS, 41, 1, JSEXN_NONE, "can't find class id {0}")
MSG_DEF(JSMSG_CANT_XDR_CLASS, 42, 1, JSEXN_NONE, "can't XDR class {0}")
MSG_DEF(JSMSG_BYTECODE_TOO_BIG, 43, 2, JSEXN_NONE, "bytecode {0} too large (limit {1})")
MSG_DEF(JSMSG_UNKNOWN_FORMAT, 44, 1, JSEXN_NONE, "unknown bytecode format {0}")
MSG_DEF(JSMSG_TOO_MANY_CON_ARGS, 45, 0, JSEXN_NONE, "too many constructor arguments")
MSG_DEF(JSMSG_TOO_MANY_FUN_ARGS, 46, 0, JSEXN_NONE, "too many function arguments")
MSG_DEF(JSMSG_BAD_QUANTIFIER, 47, 1, JSEXN_NONE, "invalid quantifier {0}")
MSG_DEF(JSMSG_MIN_TOO_BIG, 48, 1, JSEXN_NONE, "overlarge minimum {0}")
MSG_DEF(JSMSG_MAX_TOO_BIG, 49, 1, JSEXN_NONE, "overlarge maximum {0}")
MSG_DEF(JSMSG_OUT_OF_ORDER, 50, 1, JSEXN_NONE, "maximum {0} less than minimum")
MSG_DEF(JSMSG_ZERO_QUANTIFIER, 51, 1, JSEXN_NONE, "zero quantifier {0}")
MSG_DEF(JSMSG_UNTERM_QUANTIFIER, 52, 1, JSEXN_NONE, "unterminated quantifier {0}")
MSG_DEF(JSMSG_EMPTY_BEFORE_STAR, 53, 0, JSEXN_NONE, "regular expression before * could be empty")
MSG_DEF(JSMSG_EMPTY_BEFORE_PLUS, 54, 0, JSEXN_NONE, "regular expression before + could be empty")
MSG_DEF(JSMSG_MISSING_PAREN, 55, 1, JSEXN_NONE, "unterminated parenthetical {0}")
MSG_DEF(JSMSG_UNTERM_CLASS, 56, 1, JSEXN_NONE, "unterminated character class {0}")
MSG_DEF(JSMSG_TRAILING_SLASH, 57, 0, JSEXN_NONE, "trailing \\ in regular expression")
MSG_DEF(JSMSG_BAD_CLASS_RANGE, 58, 0, JSEXN_NONE, "invalid range in character class")
MSG_DEF(JSMSG_BAD_FLAG, 59, 1, JSEXN_NONE, "invalid regular expression flag {0}")
MSG_DEF(JSMSG_NO_INPUT, 60, 3, JSEXN_NONE, "no input for /{0}/{1}{2}")
MSG_DEF(JSMSG_CANT_OPEN, 61, 2, JSEXN_NONE, "can't open {0}: {1}")
MSG_DEF(JSMSG_BAD_STRING_MASK, 62, 1, JSEXN_NONE, "invalid string escape mask {0}")
MSG_DEF(JSMSG_NO_STRING_PROTO, 63, 1, JSEXN_NONE, "sorry, String.prototype.{0} is not yet implemented")
MSG_DEF(JSMSG_END_OF_DATA, 64, 0, JSEXN_NONE, "unexpected end of data")
MSG_DEF(JSMSG_SEEK_BEYOND_START, 65, 0, JSEXN_NONE, "illegal seek beyond start")
MSG_DEF(JSMSG_SEEK_BEYOND_END, 66, 0, JSEXN_NONE, "illegal seek beyond end")
MSG_DEF(JSMSG_END_SEEK, 67, 0, JSEXN_NONE, "illegal end-based seek")
MSG_DEF(JSMSG_WHITHER_WHENCE, 68, 1, JSEXN_NONE, "unknown seek whence: {0}")
MSG_DEF(JSMSG_BAD_JVAL_TYPE, 69, 1, JSEXN_NONE, "unknown jsval type {0} for XDR")
MSG_DEF(JSMSG_TRAP_USAGE, 70, 0, JSEXN_NONE, "usage: trap [fun] [pc] expr")
MSG_DEF(JSMSG_LINE2PC_USAGE, 71, 0, JSEXN_NONE, "usage: line2pc [fun] line")
MSG_DEF(JSMSG_FILE_SCRIPTS_ONLY, 72, 0, JSEXN_NONE, "only works on JS scripts read from files")
MSG_DEF(JSMSG_UNEXPECTED_EOF, 73, 1, JSEXN_NONE, "unexpected EOF in {0}")
MSG_DEF(JSMSG_DOEXP_USAGE, 74, 0, JSEXN_NONE, "usage: doexp obj id")
MSG_DEF(JSMSG_PAREN_BEFORE_FORMAL, 75, 0, JSEXN_SYNTAXERR, "missing ( before formal parameters")
MSG_DEF(JSMSG_MISSING_FORMAL, 76, 0, JSEXN_SYNTAXERR, "missing formal parameter")
MSG_DEF(JSMSG_PAREN_AFTER_FORMAL, 77, 0, JSEXN_SYNTAXERR, "missing ) after formal parameters")
MSG_DEF(JSMSG_CURLY_BEFORE_BODY, 78, 0, JSEXN_SYNTAXERR, "missing { before function body")
MSG_DEF(JSMSG_CURLY_AFTER_BODY, 79, 0, JSEXN_SYNTAXERR, "missing } after function body")
MSG_DEF(JSMSG_PAREN_BEFORE_COND, 80, 0, JSEXN_SYNTAXERR, "missing ( before condition")
MSG_DEF(JSMSG_PAREN_AFTER_COND, 81, 0, JSEXN_SYNTAXERR, "missing ) after condition")
MSG_DEF(JSMSG_NO_IMPORT_NAME, 82, 0, JSEXN_SYNTAXERR, "missing name in import statement")
MSG_DEF(JSMSG_NAME_AFTER_DOT, 83, 0, JSEXN_SYNTAXERR, "missing name after . operator")
MSG_DEF(JSMSG_BRACKET_IN_INDEX, 84, 0, JSEXN_SYNTAXERR, "missing ] in index expression")
MSG_DEF(JSMSG_NO_EXPORT_NAME, 85, 0, JSEXN_SYNTAXERR, "missing name in export statement")
MSG_DEF(JSMSG_PAREN_BEFORE_SWITCH, 86, 0, JSEXN_SYNTAXERR, "missing ( before switch expression")
MSG_DEF(JSMSG_PAREN_AFTER_SWITCH, 87, 0, JSEXN_SYNTAXERR, "missing ) after switch expression")
MSG_DEF(JSMSG_CURLY_BEFORE_SWITCH, 88, 0, JSEXN_SYNTAXERR, "missing { before switch body")
MSG_DEF(JSMSG_COLON_AFTER_CASE, 89, 0, JSEXN_SYNTAXERR, "missing : after case label")
MSG_DEF(JSMSG_WHILE_AFTER_DO, 90, 0, JSEXN_SYNTAXERR, "missing while after do-loop body")
MSG_DEF(JSMSG_PAREN_AFTER_FOR, 91, 0, JSEXN_SYNTAXERR, "missing ( after for")
MSG_DEF(JSMSG_SEMI_AFTER_FOR_INIT, 92, 0, JSEXN_SYNTAXERR, "missing ; after for-loop initializer")
MSG_DEF(JSMSG_SEMI_AFTER_FOR_COND, 93, 0, JSEXN_SYNTAXERR, "missing ; after for-loop condition")
MSG_DEF(JSMSG_PAREN_AFTER_FOR_CTRL, 94, 0, JSEXN_SYNTAXERR, "missing ) after for-loop control")
MSG_DEF(JSMSG_CURLY_BEFORE_TRY, 95, 0, JSEXN_SYNTAXERR, "missing { before try block")
MSG_DEF(JSMSG_CURLY_AFTER_TRY, 96, 0, JSEXN_SYNTAXERR, "missing } after try block")
MSG_DEF(JSMSG_PAREN_BEFORE_CATCH, 97, 0, JSEXN_SYNTAXERR, "missing ( before catch")
MSG_DEF(JSMSG_CATCH_IDENTIFIER, 98, 0, JSEXN_SYNTAXERR, "missing identifier in catch")
MSG_DEF(JSMSG_PAREN_AFTER_CATCH, 99, 0, JSEXN_SYNTAXERR, "missing ) after catch")
MSG_DEF(JSMSG_CURLY_BEFORE_CATCH, 100, 0, JSEXN_SYNTAXERR, "missing { before catch block")
MSG_DEF(JSMSG_CURLY_AFTER_CATCH, 101, 0, JSEXN_SYNTAXERR, "missing } after catch block")
MSG_DEF(JSMSG_CURLY_BEFORE_FINALLY, 102, 0, JSEXN_SYNTAXERR, "missing { before finally block")
MSG_DEF(JSMSG_CURLY_AFTER_FINALLY, 103, 0, JSEXN_SYNTAXERR, "missing } after finally block")
MSG_DEF(JSMSG_CATCH_OR_FINALLY, 104, 0, JSEXN_SYNTAXERR, "missing catch or finally after try")
MSG_DEF(JSMSG_PAREN_BEFORE_WITH, 105, 0, JSEXN_SYNTAXERR, "missing ( before with-statement object")
MSG_DEF(JSMSG_PAREN_AFTER_WITH, 106, 0, JSEXN_SYNTAXERR, "missing ) after with-statement object")
MSG_DEF(JSMSG_CURLY_IN_COMPOUND, 107, 0, JSEXN_SYNTAXERR, "missing } in compound statement")
MSG_DEF(JSMSG_NO_VARIABLE_NAME, 108, 0, JSEXN_SYNTAXERR, "missing variable name")
MSG_DEF(JSMSG_COLON_IN_COND, 109, 0, JSEXN_SYNTAXERR, "missing : in conditional expression")
MSG_DEF(JSMSG_PAREN_AFTER_ARGS, 110, 0, JSEXN_SYNTAXERR, "missing ) after argument list")
MSG_DEF(JSMSG_BRACKET_AFTER_LIST, 111, 0, JSEXN_SYNTAXERR, "missing ] after element list")
MSG_DEF(JSMSG_COLON_AFTER_ID, 112, 0, JSEXN_SYNTAXERR, "missing : after property id")
MSG_DEF(JSMSG_CURLY_AFTER_LIST, 113, 0, JSEXN_SYNTAXERR, "missing } after property list")
MSG_DEF(JSMSG_PAREN_IN_PAREN, 114, 0, JSEXN_SYNTAXERR, "missing ) in parenthetical")
MSG_DEF(JSMSG_SEMI_BEFORE_STMNT, 115, 0, JSEXN_SYNTAXERR, "missing ; before statement")
MSG_DEF(JSMSG_NO_RETURN_VALUE, 116, 0, JSEXN_NONE, "function does not always return a value")
MSG_DEF(JSMSG_DUPLICATE_FORMAL, 117, 1, JSEXN_NONE, "duplicate formal argument {0}")
MSG_DEF(JSMSG_EQUAL_AS_ASSIGN, 118, 1, JSEXN_NONE, "test for equality (==) mistyped as assignment (=)?{0}")
MSG_DEF(JSMSG_BAD_IMPORT, 119, 0, JSEXN_SYNTAXERR, "invalid import expression")
MSG_DEF(JSMSG_TOO_MANY_DEFAULTS, 120, 0, JSEXN_SYNTAXERR, "more than one switch default")
MSG_DEF(JSMSG_TOO_MANY_CASES, 121, 0, JSEXN_INTERNALERR, "too many switch cases")
MSG_DEF(JSMSG_BAD_SWITCH, 122, 0, JSEXN_SYNTAXERR, "invalid switch statement")
MSG_DEF(JSMSG_BAD_FOR_LEFTSIDE, 123, 0, JSEXN_SYNTAXERR, "invalid for/in left-hand side")
MSG_DEF(JSMSG_CATCH_AFTER_GENERAL, 124, 0, JSEXN_NONE, "catch clause after general catch")
MSG_DEF(JSMSG_CATCH_WITHOUT_TRY, 125, 0, JSEXN_SYNTAXERR, "catch without try")
MSG_DEF(JSMSG_FINALLY_WITHOUT_TRY, 126, 0, JSEXN_SYNTAXERR, "finally without try")
MSG_DEF(JSMSG_LABEL_NOT_FOUND, 127, 0, JSEXN_SYNTAXERR, "label not found")
MSG_DEF(JSMSG_TOUGH_BREAK, 128, 0, JSEXN_SYNTAXERR, "invalid break")
MSG_DEF(JSMSG_BAD_CONTINUE, 129, 0, JSEXN_SYNTAXERR, "invalid continue")
MSG_DEF(JSMSG_BAD_RETURN, 130, 0, JSEXN_SYNTAXERR, "invalid return")
MSG_DEF(JSMSG_BAD_LABEL, 131, 0, JSEXN_SYNTAXERR, "invalid label")
MSG_DEF(JSMSG_DUPLICATE_LABEL, 132, 0, JSEXN_SYNTAXERR, "duplicate label")
MSG_DEF(JSMSG_VAR_HIDES_ARG, 133, 1, JSEXN_NONE, "variable {0} hides argument")
MSG_DEF(JSMSG_BAD_VAR_INIT, 134, 0, JSEXN_SYNTAXERR, "invalid variable initialization")
MSG_DEF(JSMSG_BAD_LEFTSIDE_OF_ASS, 135, 0, JSEXN_SYNTAXERR, "invalid assignment left-hand side")
MSG_DEF(JSMSG_BAD_OPERAND, 136, 1, JSEXN_SYNTAXERR, "invalid {0} operand")
MSG_DEF(JSMSG_BAD_PROP_ID, 137, 0, JSEXN_SYNTAXERR, "invalid property id")
MSG_DEF(JSMSG_RESERVED_ID, 138, 1, JSEXN_SYNTAXERR, "{0} is a reserved identifier")
MSG_DEF(JSMSG_SYNTAX_ERROR, 139, 0, JSEXN_SYNTAXERR, "syntax error")
MSG_DEF(JSMSG_BAD_SHARP_VAR_DEF, 140, 0, JSEXN_SYNTAXERR, "invalid sharp variable definition")
MSG_DEF(JSMSG_BAD_PROTOTYPE, 141, 1, JSEXN_ERR, "'prototype' property of {0} is not an object")

Просмотреть файл

@ -447,13 +447,14 @@ FunctionDef(JSContext *cx, JSTokenStream *ts, JSTreeContext *tc,
if (sprop->getter == js_GetArgument) {
#ifdef CHECK_ARGUMENT_HIDING
OBJ_DROP_PROPERTY(cx, pobj, (JSProperty *)sprop);
js_ReportCompileErrorNumber(cx, ts,JSREPORT_ERROR,
js_ReportCompileErrorNumber(cx, ts, JSREPORT_WARNING,
JSMSG_DUPLICATE_FORMAL,
ATOM_BYTES(argAtom));
ok = JS_FALSE;
goto out;
#else
/* A duplicate parameter name. We create a dummy symbol
/*
* A duplicate parameter name. We create a dummy symbol
* entry with property id of the parameter number and set
* the id to the name of the parameter.
* The decompiler will know to treat this case specially.
@ -1542,7 +1543,7 @@ Variables(JSContext *cx, JSTokenStream *ts, JSTreeContext *tc)
if (sprop->getter == js_GetArgument) {
getter = sprop->getter;
#ifdef CHECK_ARGUMENT_HIDING
js_ReportCompileErrorNumber(cx, ts, JSREPORT_ERROR,
js_ReportCompileErrorNumber(cx, ts, JSREPORT_WARNING,
JSMSG_VAR_HIDES_ARG,
ATOM_BYTES(atom));
ok = JS_FALSE;

Просмотреть файл

@ -582,6 +582,7 @@ js_ReportCompileErrorNumber(JSContext *cx, JSTokenStream *ts, uintN flags,
report.uctokenptr = ts->token.ptr;
report.flags = flags;
#if JS_HAS_ERROR_EXCEPTIONS
/*
* If there's a runtime exception type associated with this error
* number, set that as the pending exception. For errors occuring at
@ -591,12 +592,13 @@ js_ReportCompileErrorNumber(JSContext *cx, JSTokenStream *ts, uintN flags,
* ignore this for all but toplevel compilation errors.
* XXXmccabe it's still at issue if there's a public API to distinguish
* between the two.
* between toplevel compilation and other types.
* XXX it'd probably be best if there was only one call to this
* function, but there seem to be two error reporter call points.
*/
(void)js_ErrorToException(cx, &report);
#endif
(*onError)(cx, message, &report);
@ -612,7 +614,6 @@ js_ReportCompileErrorNumber(JSContext *cx, JSTokenStream *ts, uintN flags,
fprintf(stderr, "%s:\n%s\n",message,
js_DeflateString(cx, ts->linebuf.base,
ts->linebuf.limit - ts->linebuf.base));
#endif
}
if (lastc == '\n')