|
@@ -315,11 +315,7 @@ define(function () {
|
|
|
|
|
|
var thisContext = null;
|
|
var thisContext = null;
|
|
|
|
|
|
- st.withContext = function (worker, setup) {
|
|
|
|
- return thisContext != null ?
|
|
|
|
- inContext(worker, setup) :
|
|
|
|
- inContextWithErrorHandling(worker, setup);
|
|
|
|
- };
|
|
|
|
|
|
+ st.withContext = inContext;
|
|
|
|
|
|
/*
|
|
/*
|
|
Runs worker function so that error handler is not set up
|
|
Runs worker function so that error handler is not set up
|
|
@@ -329,15 +325,19 @@ define(function () {
|
|
The effect is, $core.seamless(fn)'s exceptions are not
|
|
The effect is, $core.seamless(fn)'s exceptions are not
|
|
handed into ST error handler and caller should process them.
|
|
handed into ST error handler and caller should process them.
|
|
*/
|
|
*/
|
|
- st.seamless = function (worker) {
|
|
|
|
- return inContext(worker, function (ctx) {
|
|
|
|
|
|
+ st.seamless = function inContext (worker) {
|
|
|
|
+ var oldContext = thisContext;
|
|
|
|
+ thisContext = new SmalltalkMethodContext(thisContext, function (ctx) {
|
|
ctx.fill(null, "seamlessDoIt", {}, globals.UndefinedObject);
|
|
ctx.fill(null, "seamlessDoIt", {}, globals.UndefinedObject);
|
|
});
|
|
});
|
|
|
|
+ var result = worker(thisContext);
|
|
|
|
+ thisContext = oldContext;
|
|
|
|
+ return result;
|
|
};
|
|
};
|
|
|
|
|
|
- function inContextWithErrorHandling (worker, setup) {
|
|
|
|
|
|
+ function resultWithErrorHandling (worker) {
|
|
try {
|
|
try {
|
|
- return inContext(worker, setup);
|
|
|
|
|
|
+ return worker(thisContext);
|
|
} catch (error) {
|
|
} catch (error) {
|
|
globals.ErrorHandler._handleError_(error);
|
|
globals.ErrorHandler._handleError_(error);
|
|
thisContext = null;
|
|
thisContext = null;
|
|
@@ -349,7 +349,7 @@ define(function () {
|
|
function inContext (worker, setup) {
|
|
function inContext (worker, setup) {
|
|
var oldContext = thisContext;
|
|
var oldContext = thisContext;
|
|
thisContext = new SmalltalkMethodContext(thisContext, setup);
|
|
thisContext = new SmalltalkMethodContext(thisContext, setup);
|
|
- var result = worker(thisContext);
|
|
|
|
|
|
+ var result = oldContext == null ? resultWithErrorHandling(worker) : worker(thisContext);
|
|
thisContext = oldContext;
|
|
thisContext = oldContext;
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|