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)45foo (bar yylval, bar *yyvsp) 46 { 47 nnyacc::assign(yylval.valueList, yyvsp[0].valueList);// { dg-error "no matching|rvalue" } 48 } 49