diff options
| author | Sean Callanan <scallanan@apple.com> | 2010-09-13 21:34:21 +0000 |
|---|---|---|
| committer | Sean Callanan <scallanan@apple.com> | 2010-09-13 21:34:21 +0000 |
| commit | 9e6ed53ea51e66688dcf4d30837c6fbe4ec06f1e (patch) | |
| tree | c820006abd28b091188967ad931adb82ccf42b40 /lldb/source/Expression/ClangUserExpression.cpp | |
| parent | 535e8e5f6004865b6c3f1df3ddc603d57d2311b8 (diff) | |
| download | bcm5719-llvm-9e6ed53ea51e66688dcf4d30837c6fbe4ec06f1e.tar.gz bcm5719-llvm-9e6ed53ea51e66688dcf4d30837c6fbe4ec06f1e.zip | |
Bugfixes to the expression parser. Fixes include:
- If you put a semicolon at the end of an expression,
this no longer causes the expression parser to
error out. This was a two-part fix: first,
ClangExpressionDeclMap::Materialize now handles
an empty struct (such as when there is no return
value); second, ASTResultSynthesizer walks backward
from the end of the ASTs until it reaches something
that's not a NullStmt.
- ClangExpressionVariable now properly byte-swaps when
printing itself.
- ClangUtilityFunction now cleans up after itself when
it's done compiling itself.
- Utility functions can now use external functions just
like user expressions.
- If you end your expression with a statement that does
not return a value, the expression now runs correctly
anyway.
Also, added the beginnings of an Objective-C object
validator function, which is neither installed nor used
as yet.
llvm-svn: 113789
Diffstat (limited to 'lldb/source/Expression/ClangUserExpression.cpp')
| -rw-r--r-- | lldb/source/Expression/ClangUserExpression.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/lldb/source/Expression/ClangUserExpression.cpp b/lldb/source/Expression/ClangUserExpression.cpp index d8841d3b3e8..4e49c4875a2 100644 --- a/lldb/source/Expression/ClangUserExpression.cpp +++ b/lldb/source/Expression/ClangUserExpression.cpp @@ -196,13 +196,16 @@ ClangUserExpression::Execute (Stream &error_stream, Error dump_error; - if (!m_expr_decl_map->DumpMaterializedStruct(&exe_ctx, args, dump_error)) + if (struct_address) { - log->Printf("Couldn't extract variable values : %s", dump_error.AsCString("unknown error")); - } - else - { - log->Printf("Structure contents:\n%s", args.GetData()); + if (!m_expr_decl_map->DumpMaterializedStruct(&exe_ctx, args, dump_error)) + { + log->Printf("Couldn't extract variable values : %s", dump_error.AsCString("unknown error")); + } + else + { + log->Printf("Structure contents:\n%s", args.GetData()); + } } } |

