Files
kotlin-fork/libraries/stdlib/js-v1/src/js/callableReferenceUtils.js
T
Svyatoslav Kuzmich b1d303b027 Reorganize stdlib-js sources specific to the current JS backend
Move kotlin-stdlib-js project and the sources specific to the current backend to 'stdlib/js-v1' directory,
but leave sources that can be shared with the new IR backend in the common 'stdlib/js' location
with exception for 'stdlib/js/src/generated', which is used exclusively for current backend.
This simplifies sourceset configuration when building stdlib with the new backend.
2019-04-22 20:30:57 +03:00

56 lines
1.6 KiB
JavaScript

/*
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the license/LICENSE.txt file.
*/
Kotlin.getCallableRef = function(name, f) {
f.callableName = name;
return f;
};
Kotlin.getPropertyCallableRef = function(name, paramCount, getter, setter) {
getter.get = getter;
getter.set = setter;
getter.callableName = name;
return getPropertyRefClass(getter, setter, propertyRefClassMetadataCache[paramCount]);
};
function getPropertyRefClass(obj, setter, cache) {
obj.$metadata$ = getPropertyRefMetadata(typeof setter === "function" ? cache.mutable : cache.immutable);
obj.constructor = obj;
return obj;
}
var propertyRefClassMetadataCache = [
{
mutable: { value: null, implementedInterface: function () {
return Kotlin.kotlin.reflect.KMutableProperty0 }
},
immutable: { value: null, implementedInterface: function () {
return Kotlin.kotlin.reflect.KProperty0 }
}
},
{
mutable: { value: null, implementedInterface: function () {
return Kotlin.kotlin.reflect.KMutableProperty1 }
},
immutable: { value: null, implementedInterface: function () {
return Kotlin.kotlin.reflect.KProperty1 }
}
}
];
function getPropertyRefMetadata(cache) {
if (cache.value === null) {
cache.value = {
interfaces: [cache.implementedInterface()],
baseClass: null,
functions: {},
properties: {},
types: {},
staticMembers: {}
};
}
return cache.value;
}