summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorAaron Ballman <aaron@aaronballman.com>2019-08-29 20:00:40 +0000
committerAaron Ballman <aaron@aaronballman.com>2019-08-29 20:00:40 +0000
commit1755617214e8a0412b0aa985af2677a56c83d843 (patch)
treee5d74cdcfc08fc12439897d3b632197555197785 /clang/test
parent0785f8d0bb70b1485573556d1315784ebd085af3 (diff)
downloadbcm5719-llvm-1755617214e8a0412b0aa985af2677a56c83d843.tar.gz
bcm5719-llvm-1755617214e8a0412b0aa985af2677a56c83d843.zip
Avoid crash when dumping NULL Type as JSON.
Patch by Bert Belder. llvm-svn: 370401
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/AST/ast-dump-types-json.cpp77
-rw-r--r--clang/test/AST/gen_ast_dump_json_test.py2
2 files changed, 78 insertions, 1 deletions
diff --git a/clang/test/AST/ast-dump-types-json.cpp b/clang/test/AST/ast-dump-types-json.cpp
index 8b9bdd5fe66..d25aea8d85b 100644
--- a/clang/test/AST/ast-dump-types-json.cpp
+++ b/clang/test/AST/ast-dump-types-json.cpp
@@ -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: }
diff --git a/clang/test/AST/gen_ast_dump_json_test.py b/clang/test/AST/gen_ast_dump_json_test.py
index 975039ead27..f1c9801fb10 100644
--- a/clang/test/AST/gen_ast_dump_json_test.py
+++ b/clang/test/AST/gen_ast_dump_json_test.py
@@ -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'{{.*}}'
OpenPOWER on IntegriCloud