Question about diamond-shaped patterns formed by "implements"

Consider these two testcases:

   interface A { attribute long foo; };
   interface B {};
   interface C {};
   interface D {};
   D implements B;
   D implements C;
   B implements A;
   C implements A;

and

   interface A { attribute long foo; } ;
   interface B : A {};
   interface C : A {};
   interface D {};
   D implements B;
   D implements C;

Are these legal WebIDL? 
http://dev.w3.org/2006/webapi/WebIDL/#dfn-consequential-interfaces is 
unclear whether "consequential interfaces" is a list or a set.  In the 
former case, you get two copies of "foo" on D via the two different 
paths, and the constructs are invalid.  In the latter case, there is 
only one copy of A inolved and the constructs are valid...

In either case, the spec should probably be clarified (possibly 
including an example).

-Boris

Received on Wednesday, 6 June 2012 22:03:09 UTC