diff --git a/clang_delta/RemoveTrivialBaseTemplate.cpp b/clang_delta/RemoveTrivialBaseTemplate.cpp index 7ca61bfa..6fbd6741 100644 --- a/clang_delta/RemoveTrivialBaseTemplate.cpp +++ b/clang_delta/RemoveTrivialBaseTemplate.cpp @@ -104,9 +104,8 @@ void RemoveTrivialBaseTemplate::handleOneCXXRecordDecl( const CXXBaseSpecifier *BS = I; const Type *Ty = BS->getType().getTypePtr(); const CXXRecordDecl *Base = getBaseDeclFromType(Ty); - if (!Base || Base->hasDefinition()) { + if (!Base) continue; - } const ClassTemplateDecl *TmplD = Base->getDescribedClassTemplate(); if (!TmplD) continue; diff --git a/clang_delta/test/RemoveTrivialBaseTemplate.cpp b/clang_delta/test/RemoveTrivialBaseTemplate.cpp new file mode 100644 index 00000000..da28e354 --- /dev/null +++ b/clang_delta/test/RemoveTrivialBaseTemplate.cpp @@ -0,0 +1,16 @@ +//RUN: %clang_delta --transformation=remove-trivial-base-template --counter=1 %s | FileCheck %s +namespace std { + template class iterator{}; +} +template +struct TriaRawIterator : public std::iterator { + int pinHere; +}; + +//CHECK: namespace std { +//CHECK-NEXT: template class iterator{}; +//CHECK-NEXT: } +//CHECK-NEXT: template +//CHECK-NEXT: struct TriaRawIterator { +//CHECK-NEXT: int pinHere; +//CHECK-NEXT: };