Avoid crash when dumping NULL Type as JSON.
Patch by Bert Belder. llvm-svn: 370401
This commit is contained in:
parent
0785f8d0bb
commit
1755617214
|
@ -66,6 +66,10 @@ void JSONNodeDumper::Visit(const Stmt *S) {
|
|||
|
||||
void JSONNodeDumper::Visit(const Type *T) {
|
||||
JOS.attribute("id", createPointerRepresentation(T));
|
||||
|
||||
if (!T)
|
||||
return;
|
||||
|
||||
JOS.attribute("kind", (llvm::Twine(T->getTypeClassName()) + "Type").str());
|
||||
JOS.attribute("type", createQualType(QualType(T, 0), /*Desugar*/ false));
|
||||
attributeOnlyIfTrue("isDependent", T->isDependentType());
|
||||
|
|
|
@ -20,6 +20,11 @@ typedef int T::*TestMemberDataPointerType;
|
|||
|
||||
typedef int TestQualTypePrinting(const char* c);
|
||||
|
||||
typedef int TestUsingShadowDeclType;
|
||||
namespace TestNamespaceWithUsingShadowType {
|
||||
using ::TestUsingShadowDeclType;
|
||||
}
|
||||
|
||||
// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
|
||||
|
||||
|
||||
|
@ -422,3 +427,75 @@ typedef int TestQualTypePrinting(const char* c);
|
|||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK-NEXT: }
|
||||
|
||||
// CHECK: "kind": "NamespaceDecl",
|
||||
// CHECK-NEXT: "loc": {
|
||||
// CHECK-NEXT: "file": "{{.*}}",
|
||||
// CHECK-NEXT: "line": 24,
|
||||
// CHECK-NEXT: "col": 11,
|
||||
// CHECK-NEXT: "tokLen": 32
|
||||
// CHECK-NEXT: },
|
||||
// CHECK-NEXT: "range": {
|
||||
// CHECK-NEXT: "begin": {
|
||||
// CHECK-NEXT: "col": 1,
|
||||
// CHECK-NEXT: "tokLen": 9
|
||||
// CHECK-NEXT: },
|
||||
// CHECK-NEXT: "end": {
|
||||
// CHECK-NEXT: "line": 26,
|
||||
// CHECK-NEXT: "col": 1,
|
||||
// CHECK-NEXT: "tokLen": 1
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: },
|
||||
// CHECK-NEXT: "name": "TestNamespaceWithUsingShadowType",
|
||||
// CHECK-NEXT: "inner": [
|
||||
// CHECK-NEXT: {
|
||||
// CHECK-NEXT: "id": "0x{{.*}}",
|
||||
// CHECK-NEXT: "kind": "UsingDecl",
|
||||
// CHECK-NEXT: "loc": {
|
||||
// CHECK-NEXT: "line": 25,
|
||||
// CHECK-NEXT: "col": 9,
|
||||
// CHECK-NEXT: "tokLen": 23
|
||||
// CHECK-NEXT: },
|
||||
// CHECK-NEXT: "range": {
|
||||
// CHECK-NEXT: "begin": {
|
||||
// CHECK-NEXT: "col": 1,
|
||||
// CHECK-NEXT: "tokLen": 5
|
||||
// CHECK-NEXT: },
|
||||
// CHECK-NEXT: "end": {
|
||||
// CHECK-NEXT: "col": 9,
|
||||
// CHECK-NEXT: "tokLen": 23
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: },
|
||||
// CHECK-NEXT: "name": "::TestUsingShadowDeclType"
|
||||
// CHECK-NEXT: },
|
||||
// CHECK-NEXT: {
|
||||
// CHECK-NEXT: "id": "0x{{.*}}",
|
||||
// CHECK-NEXT: "kind": "UsingShadowDecl",
|
||||
// CHECK-NEXT: "loc": {
|
||||
// CHECK-NEXT: "col": 9,
|
||||
// CHECK-NEXT: "tokLen": 23
|
||||
// CHECK-NEXT: },
|
||||
// CHECK-NEXT: "range": {
|
||||
// CHECK-NEXT: "begin": {
|
||||
// CHECK-NEXT: "col": 9,
|
||||
// CHECK-NEXT: "tokLen": 23
|
||||
// CHECK-NEXT: },
|
||||
// CHECK-NEXT: "end": {
|
||||
// CHECK-NEXT: "col": 9,
|
||||
// CHECK-NEXT: "tokLen": 23
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: },
|
||||
// CHECK-NEXT: "isImplicit": true,
|
||||
// CHECK-NEXT: "target": {
|
||||
// CHECK-NEXT: "id": "0x{{.*}}",
|
||||
// CHECK-NEXT: "kind": "TypedefDecl",
|
||||
// CHECK-NEXT: "name": "TestUsingShadowDeclType"
|
||||
// CHECK-NEXT: },
|
||||
// CHECK-NEXT: "inner": [
|
||||
// CHECK-NEXT: {
|
||||
// CHECK-NEXT: "id": "0x0"
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK-NEXT: }
|
||||
|
|
|
@ -20,7 +20,7 @@ def normalize(dict_var):
|
|||
normalize(e)
|
||||
elif type(v) is unicode:
|
||||
st = v.encode('utf-8')
|
||||
if re.match(r"0x[0-9A-Fa-f]+", v):
|
||||
if v != "0x0" and re.match(r"0x[0-9A-Fa-f]+", v):
|
||||
dict_var[k] = u'0x{{.*}}'
|
||||
elif os.path.isfile(v):
|
||||
dict_var[k] = u'{{.*}}'
|
||||
|
|
Loading…
Reference in New Issue