- From: <bugzilla@jessica.w3.org>
- Date: Wed, 08 Jun 2011 02:35:55 +0000
- To: public-script-coord@w3.org
http://www.w3.org/Bugs/Public/show_bug.cgi?id=12845 --- Comment #21 from Cameron McCormack <cam@mcc.id.au> 2011-06-08 02:35:54 UTC --- (In reply to comment #20) > In general, do you every say where you have the same or different function > objects. For example, if two different kinds of objects a and b both implement > the method foo specified by interface Bar do you require that a.foo === b.foo? No. > What about on the same object at different points in time (could an > implementation start out with a placeholder version of method and then replace > it upon first invocation?) No, the document only gives requirements on what objects should look like at startup. > From an implementation perspective this would probably be best left > unspecified. But if you feel you must specify something then it should be that > that every function occurrence is different (it's easy to make to uses of the > same function appear different (wrapper one). It's harder to make to different > functions appear the same). That sounds reasonable. I think you are right though that this likely doesn't warrant specifying. > > The more general issue, whether overriding with different behaviour should be > > allowed by Web IDL or not, I'm still unsure about. The problem is with > > *incompatible* behaviour, right? Different behaviour is OK, as long as it is > > consistent with the promises made by the definition of the super-interface. > > The difference between "different" and "incompatible" behaviour isn't one we > > can check for in the IDL. If we think that "different but compatible" > > behaviour will never come up when designing Web APIs, then we can get a small > > win by disallowing overriding in general (apart from the > > readonly-becoming-writable issue). > > Can WebIDL really make any promises about what happens after user code starts > changing things? It can make promises about the behaviour of certain Function objects when they are called. > WebIDL can define the initial state of the Web interface > objects but if an implementation allows user code to changing or replacing > methods of these object then nothing can really be guaranteed after that > point. Guaranteeing nothing seems a bit much. I think there is plenty you can guarantee. If you have interface Node { readonly attribute Node? parentNode; }; and script does var f = Object.getOwnPropertyDescriptor(Node.prototype, "parentNode").get; Object.defineProperty(Node.prototype, "parentNode", { get: function() { } }); then it's not "all bets off"; the guarantee that calling 'f' on a Node object returns the Node's parent should still hold. The spec doesn't make guarantees on what `myNode.parentNode` will do explicitly. > Since browser implementations already allow this (and I don't think anybody is > seriously proposing disallowing it) it seem pointless to try to forbid it now. Allow user script to modify prototype objects such that sub-interfaces have incompatible behaviour, do you mean? They can of course, but I'm not sure that helps determine whether we want to allow or disallow specifications from doing it. > > OTOH, we could just file bugs on the > > specifications that specify incompatible behaviour on sub-interfaces as we find > > them... > > This seem like the right approach. Don't write buggy,internally inconsistent > specifications and when you find one fix it. Nothing you say in a > meta-specification is going to stop people from making mistakes or creating > poor designs. Although I did recently outlaw sequences from being used as the type of an attribute, since it has suboptimal behaviour when used in a natural way -- bug 12287 -- I'm inclined to agree with Allen in general here. There are only a few instances of this in HTML5 at the moment. If we consider them to be footguns, let's raise bugs on them (as Ms2ger has done). -- Configure bugmail: http://www.w3.org/Bugs/Public/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug.
Received on Wednesday, 8 June 2011 02:35:57 UTC