diff --git a/clang/lib/AST/QualTypeNames.cpp b/clang/lib/AST/QualTypeNames.cpp --- a/clang/lib/AST/QualTypeNames.cpp +++ b/clang/lib/AST/QualTypeNames.cpp @@ -192,7 +192,7 @@ // Ignore inline namespace; NS = dyn_cast(NS->getDeclContext()); } - if (NS->getDeclName()) { + if (NS && NS->getDeclName()) { return createNestedNameSpecifier(Ctx, NS, WithGlobalNsPrefix); } return nullptr; // no starting '::', no anonymous diff --git a/clang/unittests/Tooling/QualTypeNamesTest.cpp b/clang/unittests/Tooling/QualTypeNamesTest.cpp --- a/clang/unittests/Tooling/QualTypeNamesTest.cpp +++ b/clang/unittests/Tooling/QualTypeNamesTest.cpp @@ -223,6 +223,17 @@ "}\n" ); + TypeNameVisitor InlineNamespace; + InlineNamespace.ExpectedQualTypeNames["c"] = "B::C"; + InlineNamespace.runOver("inline namespace A {\n" + " namespace B {\n" + " class C {};\n" + " }\n" + "}\n" + "using namespace A::B;\n" + "C c;\n", + TypeNameVisitor::Lang_CXX11); + TypeNameVisitor AnonStrucs; AnonStrucs.ExpectedQualTypeNames["a"] = "short"; AnonStrucs.ExpectedQualTypeNames["un_in_st_1"] =