1 // RUN: rm -rf %t
2 // RUN: %clang_cc1 -std=c++11 -nostdsysteminc -I%S/Inputs/PR28812 -verify %s
3 // RUN: %clang_cc1 -std=c++11 -nostdsysteminc -fmodules -fimplicit-module-maps \
4 // RUN:            -fmodules-cache-path=%t -I%S/Inputs/PR28812 -verify %s
5 
6 template <typename> struct VarStreamArrayIterator;
7 template <typename ValueType>
8 struct VarStreamArray {
9   typedef VarStreamArrayIterator<ValueType> Iterator;
beginVarStreamArray10   Iterator begin() { return Iterator(*this); }
11 };
12 
13 #include "Textual.h"
14 
15 #include "a.h"
16 #include "b.h"
17 
18 VarStreamArray<int> a;
19 auto b = a.begin();
20 
21 // expected-no-diagnostics
22 
23