diff -r eb1c585b6c9b -r 6f1d5142cbc3 Context.st --- a/Context.st Tue May 26 01:06:42 2015 +0200 +++ b/Context.st Tue May 26 20:55:30 2015 +0200 @@ -1233,7 +1233,8 @@ %{ #ifdef __SCHTEAM__ - ERROR("unimplemented"); + return __c__._RETURN_TO(value, self.asSTContinuation()); + /* NOTREACHED */ #else OBJ sndr; @@ -1284,7 +1285,8 @@ %{ #ifdef __SCHTEAM__ - ERROR("unimplemented"); + return __c__._RETURN_TO(value, self.asSTContinuation()); + /* NOTREACHED */ #else OBJ theContext, sndr; @@ -1330,7 +1332,8 @@ %{ #ifdef __SCHTEAM__ - ERROR("unimplemented"); + return __c__._RETURN_TO(value, self.asSTContinuation()); + /* NOTREACHED */ #else OBJ theContext, sndr; @@ -1384,7 +1387,8 @@ %{ /* NOCONTEXT */ #ifdef __SCHTEAM__ - ERROR("unimplemented"); + return __c__._RETURN_FROM(value, self.asSTContinuation()); + /* NOTREACHED */ #else if (__INST(sender_) == nil) { RETURN(nil); @@ -2367,7 +2371,21 @@ %{ /* NOCONTEXT */ #ifdef __SCHTEAM__ - ERROR("unimplemented"); + { + if (self == aContext) { + return __c__._RETURN(self); + } + + STContinuation theContext = self.sender(); + + while (theContext != null) { + if ((theContext == aContext) + || theContext.isMarkedForUnwind()) { + return __c__._RETURN(theContext); + } + theContext = theContext.sender(); + } + } #else OBJ theContext; @@ -2872,11 +2890,11 @@ !Context class methodsFor:'documentation'! version - ^ '$Header: /cvs/stx/stx/libbasic/Context.st,v 1.222 2015-05-25 23:06:42 cg Exp $' + ^ '$Header: /cvs/stx/stx/libbasic/Context.st,v 1.223 2015-05-26 18:55:30 cg Exp $' ! version_CVS - ^ '$Header: /cvs/stx/stx/libbasic/Context.st,v 1.222 2015-05-25 23:06:42 cg Exp $' + ^ '$Header: /cvs/stx/stx/libbasic/Context.st,v 1.223 2015-05-26 18:55:30 cg Exp $' ! version_HG