Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(96)

Side by Side Diff: src/messages.js

Issue 1130133003: Migrate error messages, part 12. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@messages_11
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/messages.cc ('k') | src/objects.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // ------------------------------------------------------------------- 5 // -------------------------------------------------------------------
6 6
7 var $errorToString; 7 var $errorToString;
8 var $formatMessage;
9 var $getStackTraceLine; 8 var $getStackTraceLine;
10 var $messageGetPositionInLine; 9 var $messageGetPositionInLine;
11 var $messageGetLineNumber; 10 var $messageGetLineNumber;
12 var $messageGetSourceLine; 11 var $messageGetSourceLine;
12 var $noSideEffectToString;
13 var $stackOverflowBoilerplate; 13 var $stackOverflowBoilerplate;
14 var $stackTraceSymbol; 14 var $stackTraceSymbol;
15 var $toDetailString; 15 var $toDetailString;
16 var $Error; 16 var $Error;
17 var $EvalError; 17 var $EvalError;
18 var $RangeError; 18 var $RangeError;
19 var $ReferenceError; 19 var $ReferenceError;
20 var $SyntaxError; 20 var $SyntaxError;
21 var $TypeError; 21 var $TypeError;
22 var $URIError; 22 var $URIError;
(...skipping 21 matching lines...) Expand all
44 // ------------------------------------------------------------------- 44 // -------------------------------------------------------------------
45 45
46 var GlobalError; 46 var GlobalError;
47 var GlobalTypeError; 47 var GlobalTypeError;
48 var GlobalRangeError; 48 var GlobalRangeError;
49 var GlobalURIError; 49 var GlobalURIError;
50 var GlobalSyntaxError; 50 var GlobalSyntaxError;
51 var GlobalReferenceError; 51 var GlobalReferenceError;
52 var GlobalEvalError; 52 var GlobalEvalError;
53 53
54 var kMessages = {
55 // Error
56 constructor_is_generator: ["Class constructor may not be a generator"],
57 constructor_is_accessor: ["Class constructor may not be an accessor"],
58 // TypeError
59 unexpected_token: ["Unexpected token ", "%0"],
60 unexpected_token_number: ["Unexpected number"],
61 unexpected_token_string: ["Unexpected string"],
62 unexpected_token_identifier: ["Unexpected identifier"],
63 unexpected_reserved: ["Unexpected reserved word"],
64 unexpected_strict_reserved: ["Unexpected strict mode reserved word"],
65 unexpected_eos: ["Unexpected end of input"],
66 unexpected_template_string: ["Unexpected template string"],
67 malformed_regexp_flags: ["Invalid regular expression flags"],
68 unterminated_regexp: ["Invalid regular expression: missing /"],
69 unterminated_template: ["Unterminated template literal"],
70 unterminated_template_expr: ["Missing } in template expression"],
71 unterminated_arg_list: ["missing ) after argument list"],
72 multiple_defaults_in_switch: ["More than one default clause in switch statem ent"],
73 newline_after_throw: ["Illegal newline after throw"],
74 label_redeclaration: ["Label '", "%0", "' has already been declared" ],
75 var_redeclaration: ["Identifier '", "%0", "' has already been decl ared"],
76 no_catch_or_finally: ["Missing catch or finally after try"],
77 unknown_label: ["Undefined label '", "%0", "'"],
78 uncaught_exception: ["Uncaught ", "%0"],
79 undefined_method: ["Object ", "%1", " has no method '", "%0", "'" ],
80 non_object_property_store: ["Cannot set property '", "%0", "' of ", "%1"],
81 value_and_accessor: ["Invalid property. A property cannot both hav e accessors and be writable or have a value, ", "%0"],
82 proto_object_or_null: ["Object prototype may only be an Object or nul l: ", "%0"],
83 // ReferenceError
84 invalid_lhs_in_assignment: ["Invalid left-hand side in assignment"],
85 invalid_lhs_in_for: ["Invalid left-hand side in for-loop"],
86 invalid_lhs_in_postfix_op: ["Invalid left-hand side expression in postfix operation"],
87 invalid_lhs_in_prefix_op: ["Invalid left-hand side expression in prefix o peration"],
88 // SyntaxError
89 not_isvar: ["builtin %IS_VAR: not a variable"],
90 single_function_literal: ["Single function literal required"],
91 illegal_break: ["Illegal break statement"],
92 illegal_continue: ["Illegal continue statement"],
93 illegal_return: ["Illegal return statement"],
94 error_loading_debugger: ["Error loading debugger"],
95 array_indexof_not_defined: ["Array.getIndexOf: Argument undefined"],
96 illegal_access: ["Illegal access"],
97 static_prototype: ["Classes may not have static property named pr ototype"],
98 strict_mode_with: ["Strict mode code may not include a with state ment"],
99 strict_eval_arguments: ["Unexpected eval or arguments in strict mode"] ,
100 too_many_arguments: ["Too many arguments in function call (only 655 35 allowed)"],
101 too_many_parameters: ["Too many parameters in function definition (o nly 65535 allowed)"],
102 too_many_variables: ["Too many variables declared (only 4194303 all owed)"],
103 strict_param_dupe: ["Strict mode function may not have duplicate p arameter names"],
104 strict_octal_literal: ["Octal literals are not allowed in strict mode ."],
105 template_octal_literal: ["Octal literals are not allowed in template st rings."],
106 strict_delete: ["Delete of an unqualified identifier in strict mode."],
107 strict_function: ["In strict mode code, functions can only be de clared at top level or immediately within another function." ],
108 strict_caller: ["Illegal access to a strict mode caller functi on."],
109 strong_ellision: ["In strong mode, arrays with holes are depreca ted, use maps instead"],
110 strong_arguments: ["In strong mode, 'arguments' is deprecated, us e '...args' instead"],
111 strong_undefined: ["In strong mode, binding or assigning to 'unde fined' is deprecated"],
112 strong_direct_eval: ["In strong mode, direct calls to eval are depr ecated"],
113 strong_switch_fallthrough : ["In strong mode, switch fall-through is deprec ated, terminate each case with 'break', 'continue', 'return' or 'throw'"],
114 strong_equal: ["In strong mode, '==' and '!=' are deprecated, use '===' and '!==' instead"],
115 strong_delete: ["In strong mode, 'delete' is deprecated, use m aps or sets instead"],
116 strong_var: ["In strong mode, 'var' is deprecated, use 'let ' or 'const' instead"],
117 strong_for_in: ["In strong mode, 'for'-'in' loops are deprecat ed, use 'for'-'of' instead"],
118 strong_empty: ["In strong mode, empty sub-statements are depr ecated, make them explicit with '{}' instead"],
119 strong_use_before_declaration: ["In strong mode, declaring variable '", "%0", "' before its use is required"],
120 strong_unbound_global: ["In strong mode, using an undeclared global va riable '", "%0", "' is not allowed"],
121 strong_super_call_missing: ["In strong mode, invoking the super constructo r in a subclass is required"],
122 strong_super_call_duplicate: ["In strong mode, invoking the super constructo r multiple times is deprecated"],
123 strong_super_call_misplaced: ["In strong mode, the super constructor must be invoked before any assignment to 'this'"],
124 strong_constructor_super: ["In strong mode, 'super' can only be used to i nvoke the super constructor, and cannot be nested inside another statement or ex pression"],
125 strong_constructor_this: ["In strong mode, 'this' can only be used to in itialize properties, and cannot be nested inside another statement or expression "],
126 strong_constructor_return_value: ["In strong mode, returning a value from a co nstructor is deprecated"],
127 strong_constructor_return_misplaced: ["In strong mode, returning from a constr uctor before its super constructor invocation or all assignments to 'this' is de precated"],
128 sloppy_lexical: ["Block-scoped declarations (let, const, functi on, class) not yet supported outside strict mode"],
129 malformed_arrow_function_parameter_list: ["Malformed arrow function parameter list"],
130 module_export_undefined: ["Export '", "%0", "' is not defined in module" ],
131 duplicate_export: ["Duplicate export of '", "%0", "'"],
132 unexpected_super: ["'super' keyword unexpected here"],
133 duplicate_constructor: ["A class may only have one constructor"],
134 super_constructor_call: ["A 'super' constructor call may only appear as the first statement of a function, and its arguments may not access 'this'. Oth er forms are not yet supported."],
135 duplicate_proto: ["Duplicate __proto__ fields are not allowed in object literals"],
136 param_after_rest: ["Rest parameter must be last formal parameter" ],
137 derived_constructor_return: ["Derived constructors may only return object o r undefined"],
138 for_in_loop_initializer: ["for-in loop variable declaration may not have an initializer."],
139 for_of_loop_initializer: ["for-of loop variable declaration may not have an initializer."],
140 for_inof_loop_multi_bindings: ["Invalid left-hand side in ", "%0", " loop: Mu st have a single binding."],
141 bad_getter_arity: ["Getter must not have any formal parameters."] ,
142 bad_setter_arity: ["Setter must have exactly one formal parameter ."],
143 this_formal_parameter: ["'this' is not a valid formal parameter name"] ,
144 duplicate_arrow_function_formal_parameter: ["Arrow function may not have dupli cate parameter names"]
145 };
146
147
148 function FormatString(format, args) {
149 var result = "";
150 var arg_num = 0;
151 for (var i = 0; i < format.length; i++) {
152 var str = format[i];
153 if (str.length == 2 && %_StringCharCodeAt(str, 0) == 0x25) {
154 // Two-char string starts with "%".
155 var arg_num = (%_StringCharCodeAt(str, 1) - 0x30) >>> 0;
156 if (arg_num < 4) {
157 // str is one of %0, %1, %2 or %3.
158 try {
159 str = NoSideEffectToString(args[arg_num]);
160 } catch (e) {
161 if (%IsJSModule(args[arg_num]))
162 str = "module";
163 else if (IS_SPEC_OBJECT(args[arg_num]))
164 str = "object";
165 else
166 str = "#<error>";
167 }
168 }
169 }
170 result += str;
171 }
172 return result;
173 }
174
175 54
176 function NoSideEffectsObjectToString() { 55 function NoSideEffectsObjectToString() {
177 if (IS_UNDEFINED(this) && !IS_UNDETECTABLE(this)) return "[object Undefined]"; 56 if (IS_UNDEFINED(this) && !IS_UNDETECTABLE(this)) return "[object Undefined]";
178 if (IS_NULL(this)) return "[object Null]"; 57 if (IS_NULL(this)) return "[object Null]";
179 return "[object " + %_ClassOf(TO_OBJECT_INLINE(this)) + "]"; 58 return "[object " + %_ClassOf(TO_OBJECT_INLINE(this)) + "]";
180 } 59 }
181 60
182 61
183 function NoSideEffectToString(obj) { 62 function NoSideEffectToString(obj) {
184 if (IS_STRING(obj)) return obj; 63 if (IS_STRING(obj)) return obj;
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 %AddNamedProperty(Script.prototype, 'constructor', Script, 153 %AddNamedProperty(Script.prototype, 'constructor', Script,
275 DONT_ENUM | DONT_DELETE | READ_ONLY); 154 DONT_ENUM | DONT_DELETE | READ_ONLY);
276 %SetCode(Script, function(x) { 155 %SetCode(Script, function(x) {
277 // Script objects can only be created by the VM. 156 // Script objects can only be created by the VM.
278 throw MakeError(kUnsupported); 157 throw MakeError(kUnsupported);
279 }); 158 });
280 159
281 160
282 // Helper functions; called from the runtime system. 161 // Helper functions; called from the runtime system.
283 function FormatMessage(type, arg0, arg1, arg2) { 162 function FormatMessage(type, arg0, arg1, arg2) {
284 if (IS_NUMBER(type)) { 163 var arg0 = NoSideEffectToString(arg0);
285 var arg0 = NoSideEffectToString(arg0); 164 var arg1 = NoSideEffectToString(arg1);
286 var arg1 = NoSideEffectToString(arg1); 165 var arg2 = NoSideEffectToString(arg2);
287 var arg2 = NoSideEffectToString(arg2); 166 try {
288 try { 167 return %FormatMessageString(type, arg0, arg1, arg2);
289 return %FormatMessageString(type, arg0, arg1, arg2); 168 } catch (e) {
290 } catch (e) { 169 return "<error>";
291 return "";
292 }
293 } 170 }
294 // TODO(yangguo): remove this code path once we migrated all messages.
295 var format = kMessages[type];
296 if (!format) return "<unknown message " + type + ">";
297 return FormatString(format, arg0);
298 } 171 }
299 172
300 173
301 function GetLineNumber(message) { 174 function GetLineNumber(message) {
302 var start_position = %MessageGetStartPosition(message); 175 var start_position = %MessageGetStartPosition(message);
303 if (start_position == -1) return kNoLineNumberInfo; 176 if (start_position == -1) return kNoLineNumberInfo;
304 var script = %MessageGetScript(message); 177 var script = %MessageGetScript(message);
305 var location = script.locationFromPosition(start_position, true); 178 var location = script.locationFromPosition(start_position, true);
306 if (location == null) return kNoLineNumberInfo; 179 if (location == null) return kNoLineNumberInfo;
307 return location.line + 1; 180 return location.line + 1;
(...skipping 836 matching lines...) Expand 10 before | Expand all | Expand 10 after
1144 return ''; 1017 return '';
1145 } 1018 }
1146 throw e; 1019 throw e;
1147 } 1020 }
1148 } 1021 }
1149 1022
1150 $installFunctions(GlobalError.prototype, DONT_ENUM, 1023 $installFunctions(GlobalError.prototype, DONT_ENUM,
1151 ['toString', ErrorToString]); 1024 ['toString', ErrorToString]);
1152 1025
1153 $errorToString = ErrorToString; 1026 $errorToString = ErrorToString;
1154 $formatMessage = FormatMessage;
1155 $getStackTraceLine = GetStackTraceLine; 1027 $getStackTraceLine = GetStackTraceLine;
1156 $messageGetPositionInLine = GetPositionInLine; 1028 $messageGetPositionInLine = GetPositionInLine;
1157 $messageGetLineNumber = GetLineNumber; 1029 $messageGetLineNumber = GetLineNumber;
1158 $messageGetSourceLine = GetSourceLine; 1030 $messageGetSourceLine = GetSourceLine;
1031 $noSideEffectToString = NoSideEffectToString;
1159 $toDetailString = ToDetailString; 1032 $toDetailString = ToDetailString;
1160 1033
1161 $Error = GlobalError; 1034 $Error = GlobalError;
1162 $EvalError = GlobalEvalError; 1035 $EvalError = GlobalEvalError;
1163 $RangeError = GlobalRangeError; 1036 $RangeError = GlobalRangeError;
1164 $ReferenceError = GlobalReferenceError; 1037 $ReferenceError = GlobalReferenceError;
1165 $SyntaxError = GlobalSyntaxError; 1038 $SyntaxError = GlobalSyntaxError;
1166 $TypeError = GlobalTypeError; 1039 $TypeError = GlobalTypeError;
1167 $URIError = GlobalURIError; 1040 $URIError = GlobalURIError;
1168 1041
(...skipping 18 matching lines...) Expand all
1187 } 1060 }
1188 1061
1189 MakeTypeError = function(type, arg0, arg1, arg2) { 1062 MakeTypeError = function(type, arg0, arg1, arg2) {
1190 return MakeGenericError(GlobalTypeError, type, arg0, arg1, arg2); 1063 return MakeGenericError(GlobalTypeError, type, arg0, arg1, arg2);
1191 } 1064 }
1192 1065
1193 MakeURIError = function() { 1066 MakeURIError = function() {
1194 return MakeGenericError(GlobalURIError, kURIMalformed); 1067 return MakeGenericError(GlobalURIError, kURIMalformed);
1195 } 1068 }
1196 1069
1197 // The embedded versions are called from unoptimized code, with embedded
1198 // arguments. Those arguments cannot be arrays, which are context-dependent.
1199 MakeSyntaxErrorEmbedded = function(type, arg) {
1200 return MakeGenericError(GlobalSyntaxError, type, [arg]);
1201 }
1202
1203 MakeReferenceErrorEmbedded = function(type, arg) {
1204 return MakeGenericError(GlobalReferenceError, type, [arg]);
1205 }
1206
1207 MakeTypeErrorEmbedded = function(type, arg) {
1208 return MakeGenericError(GlobalTypeError, type, [arg]);
1209 }
1210
1211 //Boilerplate for exceptions for stack overflows. Used from 1070 //Boilerplate for exceptions for stack overflows. Used from
1212 //Isolate::StackOverflow(). 1071 //Isolate::StackOverflow().
1213 $stackOverflowBoilerplate = MakeRangeError(kStackOverflow); 1072 $stackOverflowBoilerplate = MakeRangeError(kStackOverflow);
1214 %DefineAccessorPropertyUnchecked($stackOverflowBoilerplate, 'stack', 1073 %DefineAccessorPropertyUnchecked($stackOverflowBoilerplate, 'stack',
1215 StackTraceGetter, StackTraceSetter, DONT_ENUM); 1074 StackTraceGetter, StackTraceSetter, DONT_ENUM);
1216 1075
1217 }) 1076 })
OLDNEW
« no previous file with comments | « src/messages.cc ('k') | src/objects.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698