[KT-4124] Fix case of super@labeled recever. Add names to metadata of inner classes.

This commit is contained in:
Alexey Andreev
2016-02-09 14:57:07 +03:00
parent 4efceb95e3
commit 133b84160e
3 changed files with 38 additions and 22 deletions
+15 -17
View File
@@ -177,14 +177,7 @@ var Kotlin = {};
Object.defineProperties(prototypeObj, metadata.properties);
copyProperties(prototypeObj, metadata.functions);
prototypeObj.constructor = constructor;
for (var innerType in metadata.types) {
if (metadata.types.hasOwnProperty(innerType)) {
Object.defineProperty(constructor, innerType, {
get: metadata.types[innerType],
configurable: true
});
}
}
Kotlin.defineInnerTypes(constructor, metadata.types);
if (metadata.baseClass != null) {
constructor.baseInitializer = metadata.baseClass;
@@ -196,6 +189,19 @@ var Kotlin = {};
return constructor;
};
Kotlin.defineInnerTypes = function(constructor, types) {
for (var innerTypeName in types) {
if (types.hasOwnProperty(innerTypeName)) {
var innerType = types[innerTypeName];
innerType.className = innerTypeName;
Object.defineProperty(constructor, innerTypeName, {
get: innerType,
configurable: true
});
}
}
};
Kotlin.createObjectNow = function (bases, constructor, functions) {
var noNameClass = Kotlin.createClassNow(bases, constructor, functions);
var obj = new noNameClass();
@@ -215,15 +221,7 @@ var Kotlin = {};
copyProperties(obj.prototype, obj.$metadata$.functions);
Object.defineProperty(obj, "object", {get: class_object, configurable: true});
for (var innerType in obj.$metadata$.types) {
if (obj.$metadata$.types.hasOwnProperty(innerType)) {
Object.defineProperty(constructor, innerType, {
get: obj.$metadata$.types[innerType],
configurable: true
});
}
}
Kotlin.defineInnerTypes(constructor, obj.$metadata$.types);
return obj;
};