diff --git a/clang/lib/AST/JSONNodeDumper.cpp b/clang/lib/AST/JSONNodeDumper.cpp --- a/clang/lib/AST/JSONNodeDumper.cpp +++ b/clang/lib/AST/JSONNodeDumper.cpp @@ -887,9 +887,10 @@ if (D->hasDefaultArgument()) JOS.attributeObject("defaultArg", [=] { + const auto *InheritedFrom = D->getDefaultArgStorage().getInheritedFrom(); Visit(D->getDefaultArgument().getArgument(), - D->getDefaultArgStorage().getInheritedFrom()->getSourceRange(), - D->getDefaultArgStorage().getInheritedFrom(), + InheritedFrom ? InheritedFrom->getSourceRange() : SourceLocation{}, + InheritedFrom, D->defaultArgumentWasInherited() ? "inherited from" : "previous"); }); } diff --git a/clang/test/AST/ast-dump-template-decls-json.cpp b/clang/test/AST/ast-dump-template-decls-json.cpp --- a/clang/test/AST/ast-dump-template-decls-json.cpp +++ b/clang/test/AST/ast-dump-template-decls-json.cpp @@ -55,6 +55,9 @@ template void V::f() {} +template