src/jdk/nashorn/internal/runtime/ECMAErrors.java
Print this page
rev 738 : 8030182: scopeCall with -1 as line number
Reviewed-by: hannesw, jlaskey
rev 760 : 8037400: Remove getInitialMap getters and GlobalObject interface
Reviewed-by: lagergren, jlaskey, attila
*** 28,37 ****
--- 28,39 ----
import java.text.MessageFormat;
import java.util.Locale;
import java.util.ResourceBundle;
import jdk.nashorn.api.scripting.NashornException;
import jdk.nashorn.internal.scripts.JS;
+ import jdk.nashorn.internal.codegen.CompilerConstants;
+ import jdk.nashorn.internal.objects.Global;
/**
* Helper class to throw various standard "ECMA error" exceptions such as Error, ReferenceError, TypeError etc.
*/
public final class ECMAErrors {
*** 63,73 ****
* @param e {@code ParserException} for error dispatcher
*
* @return the resulting {@link ECMAException}
*/
public static ECMAException asEcmaException(final ParserException e) {
! return asEcmaException(Context.getGlobalTrusted(), e);
}
/**
* Error dispatch mechanism.
* Create a {@link ParserException} as the correct JavaScript error
--- 65,75 ----
* @param e {@code ParserException} for error dispatcher
*
* @return the resulting {@link ECMAException}
*/
public static ECMAException asEcmaException(final ParserException e) {
! return asEcmaException(Context.getGlobal(), e);
}
/**
* Error dispatch mechanism.
* Create a {@link ParserException} as the correct JavaScript error
*** 75,89 ****
* @param global global scope object
* @param e {@code ParserException} for error dispatcher
*
* @return the resulting {@link ECMAException}
*/
! public static ECMAException asEcmaException(final ScriptObject global, final ParserException e) {
final JSErrorType errorType = e.getErrorType();
assert errorType != null : "error type for " + e + " was null";
! final GlobalObject globalObj = (GlobalObject)global;
final String msg = e.getMessage();
// translate to ECMAScript Error object using error type
switch (errorType) {
case ERROR:
--- 77,91 ----
* @param global global scope object
* @param e {@code ParserException} for error dispatcher
*
* @return the resulting {@link ECMAException}
*/
! public static ECMAException asEcmaException(final Global global, final ParserException e) {
final JSErrorType errorType = e.getErrorType();
assert errorType != null : "error type for " + e + " was null";
! final Global globalObj = global;
final String msg = e.getMessage();
// translate to ECMAScript Error object using error type
switch (errorType) {
case ERROR:
*** 113,123 ****
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
public static ECMAException syntaxError(final String msgId, final String... args) {
! return syntaxError(Context.getGlobalTrusted(), msgId, args);
}
/**
* Create a syntax error (ECMA 15.11.6.4)
*
--- 115,125 ----
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
public static ECMAException syntaxError(final String msgId, final String... args) {
! return syntaxError(Context.getGlobal(), msgId, args);
}
/**
* Create a syntax error (ECMA 15.11.6.4)
*
*** 125,135 ****
* @param msgId resource tag for error message
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
! public static ECMAException syntaxError(final ScriptObject global, final String msgId, final String... args) {
return syntaxError(global, null, msgId, args);
}
/**
* Create a syntax error (ECMA 15.11.6.4)
--- 127,137 ----
* @param msgId resource tag for error message
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
! public static ECMAException syntaxError(final Global global, final String msgId, final String... args) {
return syntaxError(global, null, msgId, args);
}
/**
* Create a syntax error (ECMA 15.11.6.4)
*** 139,149 ****
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
public static ECMAException syntaxError(final Throwable cause, final String msgId, final String... args) {
! return syntaxError(Context.getGlobalTrusted(), cause, msgId, args);
}
/**
* Create a syntax error (ECMA 15.11.6.4)
*
--- 141,151 ----
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
public static ECMAException syntaxError(final Throwable cause, final String msgId, final String... args) {
! return syntaxError(Context.getGlobal(), cause, msgId, args);
}
/**
* Create a syntax error (ECMA 15.11.6.4)
*
*** 152,164 ****
* @param msgId resource tag for error message
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
! public static ECMAException syntaxError(final ScriptObject global, final Throwable cause, final String msgId, final String... args) {
final String msg = getMessage("syntax.error." + msgId, args);
! return error(((GlobalObject)global).newSyntaxError(msg), cause);
}
/**
* Create a type error (ECMA 15.11.6.5)
*
--- 154,166 ----
* @param msgId resource tag for error message
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
! public static ECMAException syntaxError(final Global global, final Throwable cause, final String msgId, final String... args) {
final String msg = getMessage("syntax.error." + msgId, args);
! return error(global.newSyntaxError(msg), cause);
}
/**
* Create a type error (ECMA 15.11.6.5)
*
*** 166,176 ****
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
public static ECMAException typeError(final String msgId, final String... args) {
! return typeError(Context.getGlobalTrusted(), msgId, args);
}
/**
* Create a type error (ECMA 15.11.6.5)
*
--- 168,178 ----
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
public static ECMAException typeError(final String msgId, final String... args) {
! return typeError(Context.getGlobal(), msgId, args);
}
/**
* Create a type error (ECMA 15.11.6.5)
*
*** 178,188 ****
* @param msgId resource tag for error message
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
! public static ECMAException typeError(final ScriptObject global, final String msgId, final String... args) {
return typeError(global, null, msgId, args);
}
/**
* Create a type error (ECMA 15.11.6.5)
--- 180,190 ----
* @param msgId resource tag for error message
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
! public static ECMAException typeError(final Global global, final String msgId, final String... args) {
return typeError(global, null, msgId, args);
}
/**
* Create a type error (ECMA 15.11.6.5)
*** 192,202 ****
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
public static ECMAException typeError(final Throwable cause, final String msgId, final String... args) {
! return typeError(Context.getGlobalTrusted(), cause, msgId, args);
}
/**
* Create a type error (ECMA 15.11.6.5)
*
--- 194,204 ----
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
public static ECMAException typeError(final Throwable cause, final String msgId, final String... args) {
! return typeError(Context.getGlobal(), cause, msgId, args);
}
/**
* Create a type error (ECMA 15.11.6.5)
*
*** 205,217 ****
* @param msgId resource tag for error message
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
! public static ECMAException typeError(final ScriptObject global, final Throwable cause, final String msgId, final String... args) {
final String msg = getMessage("type.error." + msgId, args);
! return error(((GlobalObject)global).newTypeError(msg), cause);
}
/**
* Create a range error (ECMA 15.11.6.2)
*
--- 207,219 ----
* @param msgId resource tag for error message
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
! public static ECMAException typeError(final Global global, final Throwable cause, final String msgId, final String... args) {
final String msg = getMessage("type.error." + msgId, args);
! return error(global.newTypeError(msg), cause);
}
/**
* Create a range error (ECMA 15.11.6.2)
*
*** 219,229 ****
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
public static ECMAException rangeError(final String msgId, final String... args) {
! return rangeError(Context.getGlobalTrusted(), msgId, args);
}
/**
* Create a range error (ECMA 15.11.6.2)
*
--- 221,231 ----
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
public static ECMAException rangeError(final String msgId, final String... args) {
! return rangeError(Context.getGlobal(), msgId, args);
}
/**
* Create a range error (ECMA 15.11.6.2)
*
*** 231,241 ****
* @param msgId resource tag for error message
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
! public static ECMAException rangeError(final ScriptObject global, final String msgId, final String... args) {
return rangeError(global, null, msgId, args);
}
/**
* Create a range error (ECMA 15.11.6.2)
--- 233,243 ----
* @param msgId resource tag for error message
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
! public static ECMAException rangeError(final Global global, final String msgId, final String... args) {
return rangeError(global, null, msgId, args);
}
/**
* Create a range error (ECMA 15.11.6.2)
*** 245,255 ****
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
public static ECMAException rangeError(final Throwable cause, final String msgId, final String... args) {
! return rangeError(Context.getGlobalTrusted(), cause, msgId, args);
}
/**
* Create a range error (ECMA 15.11.6.2)
*
--- 247,257 ----
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
public static ECMAException rangeError(final Throwable cause, final String msgId, final String... args) {
! return rangeError(Context.getGlobal(), cause, msgId, args);
}
/**
* Create a range error (ECMA 15.11.6.2)
*
*** 258,270 ****
* @param msgId resource tag for error message
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
! public static ECMAException rangeError(final ScriptObject global, final Throwable cause, final String msgId, final String... args) {
final String msg = getMessage("range.error." + msgId, args);
! return error(((GlobalObject)global).newRangeError(msg), cause);
}
/**
* Create a reference error (ECMA 15.11.6.3)
*
--- 260,272 ----
* @param msgId resource tag for error message
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
! public static ECMAException rangeError(final Global global, final Throwable cause, final String msgId, final String... args) {
final String msg = getMessage("range.error." + msgId, args);
! return error(global.newRangeError(msg), cause);
}
/**
* Create a reference error (ECMA 15.11.6.3)
*
*** 272,282 ****
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
public static ECMAException referenceError(final String msgId, final String... args) {
! return referenceError(Context.getGlobalTrusted(), msgId, args);
}
/**
* Create a reference error (ECMA 15.11.6.3)
*
--- 274,284 ----
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
public static ECMAException referenceError(final String msgId, final String... args) {
! return referenceError(Context.getGlobal(), msgId, args);
}
/**
* Create a reference error (ECMA 15.11.6.3)
*
*** 284,294 ****
* @param msgId resource tag for error message
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
! public static ECMAException referenceError(final ScriptObject global, final String msgId, final String... args) {
return referenceError(global, null, msgId, args);
}
/**
* Create a reference error (ECMA 15.11.6.3)
--- 286,296 ----
* @param msgId resource tag for error message
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
! public static ECMAException referenceError(final Global global, final String msgId, final String... args) {
return referenceError(global, null, msgId, args);
}
/**
* Create a reference error (ECMA 15.11.6.3)
*** 298,308 ****
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
public static ECMAException referenceError(final Throwable cause, final String msgId, final String... args) {
! return referenceError(Context.getGlobalTrusted(), cause, msgId, args);
}
/**
* Create a reference error (ECMA 15.11.6.3)
*
--- 300,310 ----
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
public static ECMAException referenceError(final Throwable cause, final String msgId, final String... args) {
! return referenceError(Context.getGlobal(), cause, msgId, args);
}
/**
* Create a reference error (ECMA 15.11.6.3)
*
*** 311,323 ****
* @param msgId resource tag for error message
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
! public static ECMAException referenceError(final ScriptObject global, final Throwable cause, final String msgId, final String... args) {
final String msg = getMessage("reference.error." + msgId, args);
! return error(((GlobalObject)global).newReferenceError(msg), cause);
}
/**
* Create a URI error (ECMA 15.11.6.6)
*
--- 313,325 ----
* @param msgId resource tag for error message
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
! public static ECMAException referenceError(final Global global, final Throwable cause, final String msgId, final String... args) {
final String msg = getMessage("reference.error." + msgId, args);
! return error(global.newReferenceError(msg), cause);
}
/**
* Create a URI error (ECMA 15.11.6.6)
*
*** 325,335 ****
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
public static ECMAException uriError(final String msgId, final String... args) {
! return uriError(Context.getGlobalTrusted(), msgId, args);
}
/**
* Create a URI error (ECMA 15.11.6.6)
*
--- 327,337 ----
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
public static ECMAException uriError(final String msgId, final String... args) {
! return uriError(Context.getGlobal(), msgId, args);
}
/**
* Create a URI error (ECMA 15.11.6.6)
*
*** 337,347 ****
* @param msgId resource tag for error message
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
! public static ECMAException uriError(final ScriptObject global, final String msgId, final String... args) {
return uriError(global, null, msgId, args);
}
/**
* Create a URI error (ECMA 15.11.6.6)
--- 339,349 ----
* @param msgId resource tag for error message
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
! public static ECMAException uriError(final Global global, final String msgId, final String... args) {
return uriError(global, null, msgId, args);
}
/**
* Create a URI error (ECMA 15.11.6.6)
*** 351,361 ****
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
public static ECMAException uriError(final Throwable cause, final String msgId, final String... args) {
! return uriError(Context.getGlobalTrusted(), cause, msgId, args);
}
/**
* Create a URI error (ECMA 15.11.6.6)
*
--- 353,363 ----
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
public static ECMAException uriError(final Throwable cause, final String msgId, final String... args) {
! return uriError(Context.getGlobal(), cause, msgId, args);
}
/**
* Create a URI error (ECMA 15.11.6.6)
*
*** 364,376 ****
* @param msgId resource tag for error message
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
! public static ECMAException uriError(final ScriptObject global, final Throwable cause, final String msgId, final String... args) {
final String msg = getMessage("uri.error." + msgId, args);
! return error(((GlobalObject)global).newURIError(msg), cause);
}
/**
* Get the exception message by placing the args in the resource defined
* by the resource tag. This is visible to, e.g. the {@link jdk.nashorn.internal.parser.Parser}
--- 366,378 ----
* @param msgId resource tag for error message
* @param args arguments to resource
*
* @return the resulting {@link ECMAException}
*/
! public static ECMAException uriError(final Global global, final Throwable cause, final String msgId, final String... args) {
final String msg = getMessage("uri.error." + msgId, args);
! return error(global.newURIError(msg), cause);
}
/**
* Get the exception message by placing the args in the resource defined
* by the resource tag. This is visible to, e.g. the {@link jdk.nashorn.internal.parser.Parser}
*** 399,409 ****
*/
public static boolean isScriptFrame(final StackTraceElement frame) {
final String className = frame.getClassName();
// Look for script package in class name (into which compiler puts generated code)
! if (className.startsWith(scriptPackage)) {
final String source = frame.getFileName();
/*
* Make sure that it is not some Java code that Nashorn has in that package!
* also, we don't want to report JavaScript code that lives in script engine implementation
* We want to report only user's own scripts and not any of our own scripts like "engine.js"
--- 401,411 ----
*/
public static boolean isScriptFrame(final StackTraceElement frame) {
final String className = frame.getClassName();
// Look for script package in class name (into which compiler puts generated code)
! if (className.startsWith(scriptPackage) && !frame.getMethodName().startsWith(CompilerConstants.INTERNAL_METHOD_PREFIX)) {
final String source = frame.getFileName();
/*
* Make sure that it is not some Java code that Nashorn has in that package!
* also, we don't want to report JavaScript code that lives in script engine implementation
* We want to report only user's own scripts and not any of our own scripts like "engine.js"