diff options
| author | Zancanaro; Carlo <czan8762@plang3.cs.usyd.edu.au> | 2012-09-24 09:58:17 +1000 | 
|---|---|---|
| committer | Zancanaro; Carlo <czan8762@plang3.cs.usyd.edu.au> | 2012-09-24 09:58:17 +1000 | 
| commit | 222e2a7620e6520ffaf4fc4e69d79c18da31542e (patch) | |
| tree | 7bfbc05bfa3b41c8f9d2e56d53a0bc3e310df239 /clang/test/SemaTemplate/anonymous-union.cpp | |
| parent | 3d206f03985b50beacae843d880bccdc91a9f424 (diff) | |
Add the clang library to the repo (with some of my changes, too).
Diffstat (limited to 'clang/test/SemaTemplate/anonymous-union.cpp')
| -rw-r--r-- | clang/test/SemaTemplate/anonymous-union.cpp | 40 | 
1 files changed, 40 insertions, 0 deletions
| diff --git a/clang/test/SemaTemplate/anonymous-union.cpp b/clang/test/SemaTemplate/anonymous-union.cpp new file mode 100644 index 0000000..97ecd6e --- /dev/null +++ b/clang/test/SemaTemplate/anonymous-union.cpp @@ -0,0 +1,40 @@ +// RUN: %clang_cc1 -fsyntax-only -verify %s + +// PR5868 +struct T0 { +  int x; +  union { +    void *m0; +  }; +}; +template <typename T> +struct T1 : public T0, public T {  +  void f0() {  +    m0 = 0; // expected-error{{ambiguous conversion}} +  }  +}; + +struct A : public T0 { }; + +void f1(T1<A> *S) { S->f0(); } // expected-note{{instantiation of member function}} + +namespace rdar8635664 { +  template<typename T> +  struct X { +    struct inner; +   +    struct inner { +      union { +        int x; +        float y; +      }; + +      typedef T type; +    }; +  }; + +  void test() { +    X<int>::inner i; +    i.x = 0; +  } +} | 
