On Aug 7, 7:11 pm, "Edwin S. Ramirez" <[EMAIL PROTECTED]> wrote:
> I don't seem to be able to get warnings from Rhino (1.7R1). I have the
> following code in my startup class:
>
> static class MyFactory extends ContextFactory {
> protected boolean hasFeature(Context cx, int featureIndex) {
> switch(featureIndex) {
> case Context.FEATURE_DYNAMIC_SCOPE:
> case Context.FEATURE_STRICT_MODE:
> case Context.FEATURE_STRICT_VARS:
> case Context.FEATURE_STRICT_EVAL:
> return true;
> }
> return super.hasFeature(cx, featureIndex);
> }
> }
>
> static {
> ContextFactory.initGlobal(new MyFactory());
> }
>
> I am executing the following JavaScript function, and I don't receive
> any warnings. What I am missing.
>
> function strict() {
> var a = {};
> debug(a.name);
>
> blue = "12354";
> debug("Color is: " + blue);
>
> }
>
> function debug(msg) {
> java.System.out.println(msg+"");
>
> }
>
> Thanks,
> Edwin S. Ramirez
I created a JUnit test just now to demonstrate this feature and for
regression tests in the future. (It works fine.)
package org.mozilla.javascript.tests;
import junit.framework.TestCase;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.ContextAction;
import org.mozilla.javascript.ContextFactory;
import org.mozilla.javascript.ScriptableObject;
import org.mozilla.javascript.EvaluatorException;
/**
* Test of strict mode APIs.
*
* @author Norris Boyd
*/
public class StrictModeApiTest extends TestCase {
private ScriptableObject global;
private ContextFactory contextFactory;
static class MyContextFactory extends ContextFactory {
@Override
protected boolean hasFeature(Context cx, int featureIndex) {
switch (featureIndex) {
case Context.FEATURE_STRICT_MODE:
case Context.FEATURE_STRICT_VARS:
case Context.FEATURE_STRICT_EVAL:
case Context.FEATURE_WARNING_AS_ERROR:
return true;
}
return super.hasFeature(cx, featureIndex);
}
};
public void testStrictModeError() {
contextFactory = new MyContextFactory();
Context cx = contextFactory.enterContext();
try {
global = cx.initStandardObjects();
try {
runScript("({}.nonexistent)");
fail();
} catch (EvaluatorException e) {
assertTrue(e.getMessage().startsWith("Reference to
undefined property"));
}
} finally {
Context.exit();
}
}
private Object runScript(final String scriptSourceText) {
return this.contextFactory.call(new ContextAction() {
public Object run(Context context) {
return context.evaluateString(global, scriptSourceText,
"test source", 1, null);
}
});
}
}
_______________________________________________
dev-tech-js-engine-rhino mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-js-engine-rhino