xref: /llvm-project/clang/test/SemaTemplate/nested-incomplete-class.cpp (revision a935179ab73cfc638aba932eff341dcaafd17440)
1*a935179aSSebastian Redl // RUN: %clang_cc1 -fsyntax-only %s
2*a935179aSSebastian Redl 
3*a935179aSSebastian Redl template <typename T>
4*a935179aSSebastian Redl struct foo {
5*a935179aSSebastian Redl   struct bar;
6*a935179aSSebastian Redl 
fnfoo7*a935179aSSebastian Redl   bar fn() {
8*a935179aSSebastian Redl     // Should not get errors about bar being incomplete here.
9*a935179aSSebastian Redl     bar b = bar(1, 2);
10*a935179aSSebastian Redl     return b;
11*a935179aSSebastian Redl   }
12*a935179aSSebastian Redl };
13*a935179aSSebastian Redl 
14*a935179aSSebastian Redl template <typename T>
15*a935179aSSebastian Redl struct foo<T>::bar {
16*a935179aSSebastian Redl   bar(int, int);
17*a935179aSSebastian Redl };
18*a935179aSSebastian Redl 
fn()19*a935179aSSebastian Redl void fn() {
20*a935179aSSebastian Redl   foo<int>().fn();
21*a935179aSSebastian Redl }
22