code.aload(temporary);
code.invokevirtual(p(PyFrame.class), "setlocal",
sig(Void.TYPE, String.class, PyObject.class));
} else {
if (syminf == null) {
throw new ParseException("internal compiler error", node);
}
if ((syminf.flags & ScopeInfo.CELL) != 0) {
code.iconst(syminf.env_index);
code.aload(temporary);
code.invokevirtual(p(PyFrame.class), "setderef", sig(Void.TYPE,
Integer.TYPE, PyObject.class));
} else {
code.iconst(syminf.locals_index);
code.aload(temporary);
code.invokevirtual(p(PyFrame.class), "setlocal", sig(Void.TYPE,
Integer.TYPE, PyObject.class));
}
}
}
return null;
case Del: {
loadFrame();
if (syminf != null && (syminf.flags & ScopeInfo.GLOBAL) != 0) {
code.ldc(name);
code.invokevirtual(p(PyFrame.class), "delglobal", sig(Void.TYPE, String.class));
} else {
if (!fast_locals) {
code.ldc(name);
code.invokevirtual(p(PyFrame.class), "dellocal",
sig(Void.TYPE, String.class));
} else {
if (syminf == null) {
throw new ParseException("internal compiler error", node);
}
if ((syminf.flags & ScopeInfo.CELL) != 0) {
module.error("can not delete variable '" + name +
"' referenced in nested scope", true, node);
}