diff --git a/clang/lib/AST/APValue.cpp b/clang/lib/AST/APValue.cpp index ddb2f1b84519..c87cfd49d873 100644 --- a/clang/lib/AST/APValue.cpp +++ b/clang/lib/AST/APValue.cpp @@ -1573,9 +1573,9 @@ LinkageInfo LinkageComputer::getLVForValue(const APValue &V, } static QualType unwrapReflectedType(QualType QT) { - bool UnwrapAliases = false; bool IsConst = QT.isConstQualified(); bool IsVolatile = QT.isVolatileQualified(); + bool UnwrapAliases = (IsConst || IsVolatile); void *AsPtr; do { diff --git a/clang/test/Reflection/info-equality.cpp b/clang/test/Reflection/info-equality.cpp index 07d14ef7e8f2..dcf4229a7db7 100644 --- a/clang/test/Reflection/info-equality.cpp +++ b/clang/test/Reflection/info-equality.cpp @@ -108,6 +108,7 @@ static_assert(^^int != ^^unsigned int); static_assert(^^int != ^^Enum); static_assert(^^int != ^^EnumCls); static_assert(^^int_alias != ^^int); +static_assert(^^int_alias const == ^^int const); static_assert(^^int_alias != ^^Test::type); static_assert(^^int_alias != ^^myns::Test::type); static_assert(^^Test::type != ^^myns::Test::type); diff --git a/libcxx/test/std/experimental/reflection/to-and-from-values.pass.cpp b/libcxx/test/std/experimental/reflection/to-and-from-values.pass.cpp index 4624137e0fd8..edc65674056d 100644 --- a/libcxx/test/std/experimental/reflection/to-and-from-values.pass.cpp +++ b/libcxx/test/std/experimental/reflection/to-and-from-values.pass.cpp @@ -214,13 +214,11 @@ struct S{}; using Alias1 = int; constexpr Alias1 a1 = 3; -static_assert(type_of(^^a1) != ^^const Alias1); static_assert(type_of(^^a1) == ^^const int); static_assert(type_of(value_of(^^a1)) == ^^int); using Alias2 = S; constexpr Alias2 a2 {}; -static_assert(type_of(^^a2) != ^^const Alias2); static_assert(type_of(^^a2) == ^^const S); static_assert(type_of(value_of(^^a2)) == ^^const S);