Added a new AST transformation pass called the

"Playground Transform."  This is an
instrumentation pass that adds calls to a
function called playground_log at locations of
interest.  Roughly speaking, these locations are

- Initialization of variables
- Modification of variables
- Expressions returning values
- Application of mutating methods on objects

The playground transform currently only finds
modifications of variables, but the intent is to
make all of these cases work.

It is enabled by a frontend option, and can
also be invoked by calling

swift::performPlaygroundTransform(SF)

which is the way LLDB, its main client, will
use it.

The frontend option is intended for testing,
and indeed I will add tests for this
transformation in the coming week as I bring
more functionality online.


Swift SVN r14801
This commit is contained in:
Sean Callanan
2014-03-07 22:59:19 +00:00
parent dce0673db1
commit 3b95376949
7 changed files with 246 additions and 0 deletions

View File

@@ -308,6 +308,9 @@ void CompilerInstance::performParse() {
CurTUElem);
CurTUElem = MainFile.Decls.size();
} while (!Done);
if (Invocation.getFrontendOptions().Playground)
performPlaygroundTransform(MainFile);
}
if (!Invocation.getParseOnly()) {