Index: lit/Expr/TestTypeOfExpr.test =================================================================== --- /dev/null +++ lit/Expr/TestTypeOfExpr.test @@ -0,0 +1,4 @@ +# RUN: %lldb -b -s %s | FileCheck %s + +expression int i; __typeof__(i) j = 1; j +# CHECK: typeof (i)) $0 = 1 Index: source/Symbol/ClangASTContext.cpp =================================================================== --- source/Symbol/ClangASTContext.cpp +++ source/Symbol/ClangASTContext.cpp @@ -4046,9 +4046,16 @@ ->getUnderlyingType()) .GetTypeInfo(pointee_or_element_clang_type); case clang::Type::TypeOfExpr: - return 0; + return CompilerType(getASTContext(), + llvm::cast(qual_type) + ->getUnderlyingExpr() + ->getType()) + .GetTypeInfo(pointee_or_element_clang_type); case clang::Type::TypeOf: - return 0; + return CompilerType( + getASTContext(), + llvm::cast(qual_type)->getUnderlyingType()) + .GetTypeInfo(pointee_or_element_clang_type); case clang::Type::UnresolvedUsing: return 0; @@ -4255,9 +4262,17 @@ break; case clang::Type::TypeOfExpr: - break; + return CompilerType(getASTContext(), + llvm::cast(qual_type) + ->getUnderlyingExpr() + ->getType()) + .GetTypeClass(); case clang::Type::TypeOf: - break; + return CompilerType( + getASTContext(), + llvm::cast(qual_type)->getUnderlyingType()) + .GetTypeClass(); + case clang::Type::Decltype: break; case clang::Type::TemplateSpecialization: @@ -5060,7 +5075,17 @@ return CompilerType(getASTContext(), llvm::cast(qual_type)->desugar()) .GetEncoding(count); - + case clang::Type::TypeOfExpr: + return CompilerType(getASTContext(), + llvm::cast(qual_type) + ->getUnderlyingExpr() + ->getType()) + .GetEncoding(count); + case clang::Type::TypeOf: + return CompilerType( + getASTContext(), + llvm::cast(qual_type)->getUnderlyingType()) + .GetEncoding(count); case clang::Type::DependentSizedArray: case clang::Type::DependentSizedExtVector: case clang::Type::UnresolvedUsing: @@ -5074,8 +5099,6 @@ case clang::Type::PackExpansion: case clang::Type::ObjCObject: - case clang::Type::TypeOfExpr: - case clang::Type::TypeOf: case clang::Type::Decltype: case clang::Type::TemplateSpecialization: case clang::Type::DeducedTemplateSpecialization: @@ -5214,6 +5237,17 @@ getASTContext(), llvm::cast(qual_type)->getNamedType()) .GetFormat(); + case clang::Type::TypeOfExpr: + return CompilerType(getASTContext(), + llvm::cast(qual_type) + ->getUnderlyingExpr() + ->getType()) + .GetFormat(); + case clang::Type::TypeOf: + return CompilerType( + getASTContext(), + llvm::cast(qual_type)->getUnderlyingType()) + .GetFormat(); case clang::Type::DependentSizedArray: case clang::Type::DependentSizedExtVector: case clang::Type::UnresolvedUsing: @@ -5227,8 +5261,6 @@ case clang::Type::PackExpansion: case clang::Type::ObjCObject: - case clang::Type::TypeOfExpr: - case clang::Type::TypeOf: case clang::Type::Decltype: case clang::Type::TemplateSpecialization: case clang::Type::DeducedTemplateSpecialization: @@ -6264,9 +6296,12 @@ return GetNumPointeeChildren( llvm::cast(qual_type)->getNamedType()); case clang::Type::TypeOfExpr: - return 0; + return GetNumPointeeChildren(llvm::cast(qual_type) + ->getUnderlyingExpr() + ->getType()); case clang::Type::TypeOf: - return 0; + return GetNumPointeeChildren( + llvm::cast(qual_type)->getUnderlyingType()); case clang::Type::Decltype: return 0; case clang::Type::Record: @@ -10086,4 +10121,3 @@ lldbassert(m_scratch_ast_source_ap != nullptr); return m_scratch_ast_source_ap->GetMergerUnchecked(); } -