================
@@ -1174,4 +1174,57 @@ llvm::json::Value toJSON(const CompileUnit &CU) {
return result;
}
+bool fromJSON(const llvm::json::Value &Params, StackFrameFormat &SFF,
+ llvm::json::Path Path) {
+ json::ObjectMapper O(Params, Path);
+ return O && O.mapOptional("parameters", SFF.parameters) &&
+ O.mapOptional("parameterTypes", SFF.parameterTypes) &&
+ O.mapOptional("parameterNames", SFF.parameterNames) &&
+ O.mapOptional("parameterValues", SFF.parameterValues) &&
+ O.mapOptional("line", SFF.line) &&
+ O.mapOptional("module", SFF.module) &&
+ O.mapOptional("includeAll", SFF.includeAll);
+}
+
+llvm::json::Value toJSON(const StackFrame::PresentationHint &PH) {
+ switch (PH) {
+ case StackFrame::ePresentationHintNormal:
+ return "normal";
+ case StackFrame::ePresentationHintLabel:
+ return "label";
+ case StackFrame::ePresentationHintSubtle:
+ return "subtle";
+ }
+ llvm_unreachable("unhandled stackFrame presentationHint.");
+}
+
+llvm::json::Value toJSON(const StackFrame &SF) {
+ json::Object result{{"id", SF.id}, {"name", SF.name}};
+
+ if (SF.source) {
+ result.insert({"source", *SF.source});
+ assert(SF.line != LLDB_INVALID_LINE_NUMBER);
+ result.insert({"line", SF.line});
+ result.insert({"column", SF.column});
+ if (SF.endLine != 0 && SF.endLine != LLDB_INVALID_LINE_NUMBER)
+ result.insert({"endLine", SF.endLine});
+ if (SF.endColumn != 0 && SF.endColumn != LLDB_INVALID_COLUMN_NUMBER)
+ result.insert({"endColumn", SF.endColumn});
+ } else {
+ result.insert({"line", 0});
+ result.insert({"column", 0});
----------------
DrSergei wrote:
`protocol::Source` contains information only about file, so we need `line` and
`column` fields
https://github.com/llvm/llvm-project/pull/173226
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits