JS: update support of enum's values() and valueOf()

This commit is contained in:
Alexander Udalov
2014-09-05 18:55:23 +04:00
parent c5345a83c9
commit d52eff0825
10 changed files with 111 additions and 94 deletions
@@ -222,6 +222,41 @@ var Kotlin = {};
return $o;
};
/**
* @param {(function():Array.<*>)|null} basesFun
* @param {?=} constructor
* @param {function():Object} enumEntries
* @param {Object=} properties
* @returns {*}
*/
Kotlin.createEnumClass = function (basesFun, constructor, enumEntries, properties) {
return Kotlin.createClass(
basesFun, constructor, properties, {
object_initializer$: function () {
var enumEntryList = enumEntries()
var i = 0;
var values = [];
for (var entryName in enumEntryList) {
if (enumEntryList.hasOwnProperty(entryName)) {
var entryObject = enumEntryList[entryName];
values[i] = entryObject;
entryObject.ordinal$ = i;
entryObject.name$ = entryName;
i++;
}
}
enumEntryList.values$ = values;
return enumEntryList;
},
values: function() {
return this.object.values$;
},
valueOf_61zpoe$: function(name) {
return this.object[name];
}
})
};
/**
* @param {(function():Array.<*>)|null} basesFun
* @param {Object=} properties