15b9cc5df25c2198f270dd1d5c438fdce70d4051dSebastian Redl// RUN: %clang_cc1 -fsyntax-only %s
25b9cc5df25c2198f270dd1d5c438fdce70d4051dSebastian Redl
35b9cc5df25c2198f270dd1d5c438fdce70d4051dSebastian Redltemplate <typename T>
45b9cc5df25c2198f270dd1d5c438fdce70d4051dSebastian Redlstruct foo {
55b9cc5df25c2198f270dd1d5c438fdce70d4051dSebastian Redl  struct bar;
65b9cc5df25c2198f270dd1d5c438fdce70d4051dSebastian Redl
75b9cc5df25c2198f270dd1d5c438fdce70d4051dSebastian Redl  bar fn() {
85b9cc5df25c2198f270dd1d5c438fdce70d4051dSebastian Redl    // Should not get errors about bar being incomplete here.
95b9cc5df25c2198f270dd1d5c438fdce70d4051dSebastian Redl    bar b = bar(1, 2);
105b9cc5df25c2198f270dd1d5c438fdce70d4051dSebastian Redl    return b;
115b9cc5df25c2198f270dd1d5c438fdce70d4051dSebastian Redl  }
125b9cc5df25c2198f270dd1d5c438fdce70d4051dSebastian Redl};
135b9cc5df25c2198f270dd1d5c438fdce70d4051dSebastian Redl
145b9cc5df25c2198f270dd1d5c438fdce70d4051dSebastian Redltemplate <typename T>
155b9cc5df25c2198f270dd1d5c438fdce70d4051dSebastian Redlstruct foo<T>::bar {
165b9cc5df25c2198f270dd1d5c438fdce70d4051dSebastian Redl  bar(int, int);
175b9cc5df25c2198f270dd1d5c438fdce70d4051dSebastian Redl};
185b9cc5df25c2198f270dd1d5c438fdce70d4051dSebastian Redl
195b9cc5df25c2198f270dd1d5c438fdce70d4051dSebastian Redlvoid fn() {
205b9cc5df25c2198f270dd1d5c438fdce70d4051dSebastian Redl  foo<int>().fn();
215b9cc5df25c2198f270dd1d5c438fdce70d4051dSebastian Redl}
22