File tree Expand file tree Collapse file tree 3 files changed +20
-3
lines changed
test/Interop/Cxx/class/inheritance Expand file tree Collapse file tree 3 files changed +20
-3
lines changed Original file line number Diff line number Diff line change @@ -338,16 +338,18 @@ namespace {
338338
339339 if (auto cxxRecord = dyn_cast<clang::CXXRecordDecl>(ClangDecl)) {
340340 for (auto base : cxxRecord->bases ()) {
341- auto baseRecord = cast<clang::RecordType>(base.getType ())->getDecl ();
341+ auto baseType = base.getType ().getCanonicalType ();
342+
343+ auto baseRecord = cast<clang::RecordType>(baseType)->getDecl ();
342344 auto baseCxxRecord = cast<clang::CXXRecordDecl>(baseRecord);
343345
344346 if (baseCxxRecord->isEmpty ())
345347 continue ;
346348
347349 auto offset = layout.getBaseClassOffset (baseCxxRecord);
348350 auto size =
349- ClangDecl->getASTContext ().getTypeSizeInChars (base. getType () );
350- fn (base. getType () , offset, size);
351+ ClangDecl->getASTContext ().getTypeSizeInChars (baseType );
352+ fn (baseType , offset, size);
351353 }
352354 }
353355 }
Original file line number Diff line number Diff line change @@ -46,3 +46,12 @@ struct NonTrivialHasOneField {
4646struct NonTrivialDerivedFromAll : NonTrivialHasOneField, NonTrivialDerivedWithOneField {
4747 int f = 6 ;
4848};
49+
50+ // Templates:
51+
52+ template <class T >
53+ struct ClassTemplate {
54+ T value;
55+ };
56+
57+ struct DerivedFromClassTemplate : ClassTemplate<int > {};
Original file line number Diff line number Diff line change @@ -52,4 +52,10 @@ FieldsTestSuite.test("Fields from derived from non trivial") {
5252 expectEqual ( mutable. f, 48 )
5353}
5454
55+ FieldsTestSuite . test ( " Derived from class template " ) {
56+ var derived = DerivedFromClassTemplate ( )
57+ derived. value = 42
58+ expectEqual ( derived. value, 42 )
59+ }
60+
5561runAllTests ( )
You can’t perform that action at this time.
0 commit comments