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