diff --git a/clang/include/clang/AST/PropertiesBase.td b/clang/include/clang/AST/PropertiesBase.td index 1cd1c79d235812..9aacdb9fee3626 100644 --- a/clang/include/clang/AST/PropertiesBase.td +++ b/clang/include/clang/AST/PropertiesBase.td @@ -362,7 +362,7 @@ let Class = PropertyTypeCase in { : nullptr) }]; } def : Property<"operatorKind", OverloadedOperatorKind> { - let Conditional = [{ identifier }]; + let Conditional = [{ !identifier }]; let Read = [{ dtn->getOperator() }]; } def : Creator<[{ diff --git a/clang/test/PCH/cxx-templates.cpp b/clang/test/PCH/cxx-templates.cpp index 966bd00b858c46..cd2787d9035913 100644 --- a/clang/test/PCH/cxx-templates.cpp +++ b/clang/test/PCH/cxx-templates.cpp @@ -165,3 +165,13 @@ namespace DependentMemberExpr { static_assert(A().f() == 1); // expected-error {{static_assert failed}} #endif } + +namespace DependentTemplateName { + struct HasMember { + template struct Member; + }; + + void test() { + getWithIdentifier(); + } +} diff --git a/clang/test/PCH/cxx-templates.h b/clang/test/PCH/cxx-templates.h index 5aa68546a429c4..b4ea2c23b3ccd8 100644 --- a/clang/test/PCH/cxx-templates.h +++ b/clang/test/PCH/cxx-templates.h @@ -448,3 +448,11 @@ namespace DependentMemberExpr { constexpr int f() { return Base::setstate(); } }; } + +namespace DependentTemplateName { + template