http://d.puremagic.com/issues/show_bug.cgi?id=6857
Stewart Gordon <s...@iname.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |s...@iname.com --- Comment #20 from Stewart Gordon <s...@iname.com> 2012-05-03 16:45:21 PDT --- (In reply to comment #5) > This is incorrect. It must satisfy the precondition for A or any > class derived from A. The in contract is part of the API of class A. If you call a method of A with arguments that don't satisfy this contract, you are not conforming to the API. (In reply to comment #10) > It isn't a bug, it is the way it is supposed to work. Nor am I > ignoring it - I'm trying to explain it. You're explaining the design you're copying. That's quite different from explaining why you've chosen to copy this particular design to the letter. (In reply to comment #19) > (In reply to comment #16) >> This is the issue. WHY are they done based on the virtual type? >> Checking the contracts based on static typing would detect logical >> errors in the calling code. Doing it based on the virtual type >> ignores latent bugs in specific instances where they are harmless. >> I can't understand why that's a good idea. > > The whole idea of polymorphism is to base things on the virtual > type. What are "things"? If you mean the effect of a call, then yes. This we seem to be all agreed on. If you mean whether a given call is legal, then you could by the same argument insist that called method names must be resolved in the context of the virtual type. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------