1// { dg-do assemble  }
2// GROUPS passed conversions
3class GttObject {};
4class GctObject: virtual public GttObject {};
5class NDAMObject: virtual public GttObject, virtual public GctObject {};
6class GctHashObject: virtual public GctObject {};
7
8class GctRef: virtual public GctHashObject
9{ public: operator void*() const; };
10
11class NDAMAssemblerObject: virtual public NDAMObject {};
12class GctReferenceObject: virtual public GctHashObject {};
13class NDAMValue: virtual public NDAMAssemblerObject, public GctReferenceObject {};
14
15class nnyacc;
16class NDAMValueRef : virtual public NDAMObject, public GctRef
17{
18  NDAMValue *operator->() const;
19  operator NDAMValue *() const;
20friend class nnyacc;
21};
22
23typedef void* Pix;
24class NDAMValueRefSLList
25{
26public:
27  NDAMValueRefSLList();
28  NDAMValueRefSLList(const NDAMValueRefSLList& a);
29  ~NDAMValueRefSLList();
30  NDAMValueRef& operator () (Pix p) const;
31};
32
33struct bar
34{
35  NDAMValueRefSLList *valueList;
36};
37
38class nnyacc
39{
40public:
41      static void assign(void*& lval, void*& rval); // { dg-message "nnyacc::assign|no known conversion" }
42};
43
44void
45foo (bar yylval, bar *yyvsp)
46{
47  nnyacc::assign(yylval.valueList, yyvsp[0].valueList);// { dg-error "no matching|rvalue" }
48}
49