public OScope compileSLC(final ScopeLikeActivity source, final OScope.Variable[] variables) {
final OScope implicitScope = new OScope(_oprocess, getCurrent());
implicitScope.implicitScope = true;
implicitScope.name = createName(source, "implicit-scope");
implicitScope.debugInfo = createDebugInfo(source, "Scope-like construct " + source);
compileScope(implicitScope, source.getScope(), new Runnable() {
public void run() {
compileLinks(source);
for (OScope.Variable v : variables) {
v.declaringScope = implicitScope;
implicitScope.addLocalVariable(v);
}
if (source instanceof ScopeActivity) {
Activity scopeChild = ((ScopeActivity) source).getChildActivity();
if (scopeChild == null)
throw new CompilationException(__cmsgs.errEmptyScope().setSource(source));
implicitScope.activity = compile(scopeChild);
} else {
implicitScope.activity = compileActivity(false, source);
}
}
});
return implicitScope;
}