Update 2010-12-20: I created a bug report which was set to “wontfix”. As Christopher Pojer explained here there is no guarantee that this.parent is defined in classes that are used as interfaces.
Some weeks ago, I wrote about two API breaks I found in MooTools Core 1.3 when I tried to upgrade from 1.2.5. After creating a bug report, the API breaks turn out to result from a code cleanup which removes the support for some undocumented features in MooTools 1.2.5.
Today I found another problem: Upgrading to MooTools Core 1.3 (from 1.2.5) breaks my inheritance structures. The following simplified example demonstrates the problem:
var MyBaseClass = new Class({
sayHello: function() {
alert("BaseClass: Hello!");
}
});
var MyInterface = new Class({
sayHello: function() {
alert("Interface: Hello!");
this.parent();
}
});
var MyClass = new Class({
Extends: MyBaseClass
,Implements: MyInterface
});
var myClass = new MyClass();
myClass.sayHello();
With MooTools Core 1.2.5 the output was as expected: Two alert boxes show up “Interface: Hello!” and “BaseClass: Hello!”. With MooTools 1.3, I get the following error after the first alert box:
The method “sayHello” has no parent.
[Break on this error] if (!previous) throw new Error(‘The method “‘ + name + ‘” has no parent.’);