Home | History | Annotate | Download | only in Parser
      1 // RUN: %clang_cc1 -fdelayed-template-parsing -fsyntax-only -verify %s
      2 
      3 template <class T>
      4 class A {
      5    void foo() {
      6        undeclared();
      7    }
      8       void foo2();
      9 };
     10 
     11 template <class T>
     12 class B {
     13    void foo4() { } // expected-note {{previous definition is here}}  expected-note {{previous definition is here}}
     14    void foo4() { } // expected-error {{class member cannot be redeclared}} expected-error {{redefinition of 'foo4'}}  expected-note {{previous definition is here}}
     15 };
     16 
     17 
     18 template <class T>
     19 void B<T>::foo4() {// expected-error {{redefinition of 'foo4'}}
     20 }
     21 
     22 template <class T>
     23 void A<T>::foo2() {
     24     undeclared();
     25 }
     26 
     27 
     28 template <class T>
     29 void foo3() {
     30    undeclared();
     31 }
     32 
     33 template void A<int>::foo2();
     34 
     35 
     36 void undeclared()
     37 {
     38 
     39 }
     40 
     41 template <class T> void foo5() {} //expected-note {{previous definition is here}}
     42 template <class T> void foo5() {} // expected-error {{redefinition of 'foo5'}}
     43