diff --git a/doc/assets/xml_spec.xsd b/doc/assets/xml_spec.xsd index df05a215ea5..417e63532d8 100644 --- a/doc/assets/xml_spec.xsd +++ b/doc/assets/xml_spec.xsd @@ -11,6 +11,7 @@ + @@ -164,6 +165,7 @@ + diff --git a/regression/cbmc/json-interface1/test.desc b/regression/cbmc/json-interface1/test.desc index a15a7b20943..083df61a021 100644 --- a/regression/cbmc/json-interface1/test.desc +++ b/regression/cbmc/json-interface1/test.desc @@ -5,8 +5,8 @@ activate-multi-line-match ^EXIT=10$ ^SIGNAL=0$ Not unwinding loop foo\.0 iteration 3 file main\.c line 5 function foo thread 0 -\{\n\s*"description": "assertion 0",\n\s*"property": "foo\.assertion\.(1|3)",\n\s*"status": "SUCCESS"\n\s*\} -\{\n\s*"description": "assertion 0",\n\s*"property": "foo\.assertion\.(1|3)",\n\s*"status": "FAILURE",\n\s*"trace": \[ +\{\n\s*"description": "assertion 0",\n\s*"property": "foo\.assertion\.(1|3)",\n\s*"sourceLocation": \{\n\s*"file": "main.c",\n\s*"function": "foo",\n\s*"line": "(8|11)",\n\s*"workingDirectory": ".*json-interface1"\n\s*\},\n\s*"status": "SUCCESS"\n\s*\} +\{\n\s*"description": "assertion 0",\n\s*"property": "foo\.assertion\.(1|3)",\n\s*"sourceLocation": \{\n\s*"file": "main.c",\n\s*"function": "foo",\n\s*"line": "(8|11)",\n\s*"workingDirectory": ".*json-interface1"\n\s*\},\n\s*"status": "FAILURE",\n\s*"trace": \[ VERIFICATION FAILED -- "property": "foo\.assertion\.2" diff --git a/regression/cbmc/xml-interface1/test.desc b/regression/cbmc/xml-interface1/test.desc index 8ef70fe541a..7f33c189af2 100644 --- a/regression/cbmc/xml-interface1/test.desc +++ b/regression/cbmc/xml-interface1/test.desc @@ -4,7 +4,7 @@ CORE ^EXIT=10$ ^SIGNAL=0$ Not unwinding loop foo\.0 iteration 3 file main\.c line 5 function foo thread 0 - + VERIFICATION FAILED diff --git a/src/goto-checker/properties.cpp b/src/goto-checker/properties.cpp index d328f62eb10..676b75efdae 100644 --- a/src/goto-checker/properties.cpp +++ b/src/goto-checker/properties.cpp @@ -14,8 +14,10 @@ Author: Daniel Kroening, Peter Schrammel #include #include #include +#include #include #include +#include #include @@ -110,6 +112,7 @@ xmlt xml(const irep_idt &property_id, const property_infot &property_info) xmlt xml_result("result"); xml_result.set_attribute("property", id2string(property_id)); xml_result.set_attribute("status", as_string(property_info.status)); + xml_result.new_element(xml(property_info.pc->source_location())); return xml_result; } @@ -122,6 +125,7 @@ static void json( result["property"] = json_stringt(property_id); result["description"] = json_stringt(property_info.description); result["status"] = json_stringt(as_string(property_info.status)); + result["sourceLocation"] = json(property_info.pc->source_location()); } json_objectt