From a7b8207a9521067d8d882b146f45e6e4ba31cbcb Mon Sep 17 00:00:00 2001 From: "mccabe%netscape.com" Date: Mon, 31 Aug 1998 09:49:43 +0000 Subject: [PATCH] Further runtime error work... expose many new errors as catchable exceptions. Mostly syntax errors, so far. Fixed missing #if JS_HAS_ERROR_EXCEPTIONS git-svn-id: svn://10.0.0.236/trunk@8856 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/js/ref/jsfun.c | 30 +++-- mozilla/js/ref/jsinterp.c | 4 +- mozilla/js/ref/jsmsg.def | 262 ++++++++++++++++++-------------------- mozilla/js/ref/jsparse.c | 7 +- mozilla/js/ref/jsscan.c | 5 +- 5 files changed, 154 insertions(+), 154 deletions(-) diff --git a/mozilla/js/ref/jsfun.c b/mozilla/js/ref/jsfun.c index 449c33ac29a..91bfbace169 100644 --- a/mozilla/js/ref/jsfun.c +++ b/mozilla/js/ref/jsfun.c @@ -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)); } } diff --git a/mozilla/js/ref/jsinterp.c b/mozilla/js/ref/jsinterp.c index eeeec16e464..44027b434a0 100644 --- a/mozilla/js/ref/jsinterp.c +++ b/mozilla/js/ref/jsinterp.c @@ -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; diff --git a/mozilla/js/ref/jsmsg.def b/mozilla/js/ref/jsmsg.def index 6923314e8c5..d19774f2f19 100644 --- a/mozilla/js/ref/jsmsg.def +++ b/mozilla/js/ref/jsmsg.def @@ -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") + + + diff --git a/mozilla/js/ref/jsparse.c b/mozilla/js/ref/jsparse.c index 876cd1d1eda..344315c23c2 100644 --- a/mozilla/js/ref/jsparse.c +++ b/mozilla/js/ref/jsparse.c @@ -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; diff --git a/mozilla/js/ref/jsscan.c b/mozilla/js/ref/jsscan.c index 02d930008af..77f217f8e8a 100644 --- a/mozilla/js/ref/jsscan.c +++ b/mozilla/js/ref/jsscan.c @@ -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')