org.jetbrains.kotlin.ir.backend.js.JsMapping.kt Maven / Gradle / Ivy
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.ir.backend.js
import org.jetbrains.kotlin.backend.common.DefaultMapping
import org.jetbrains.kotlin.backend.common.Mapping
import org.jetbrains.kotlin.ir.declarations.*
class JsMapping : DefaultMapping() {
val outerThisFieldSymbols = newMapping()
val innerClassConstructors = newMapping()
val originalInnerClassPrimaryConstructorByClass = newMapping()
val secondaryConstructorToDelegate = newMapping()
val secondaryConstructorToFactory = newMapping()
val objectToGetInstanceFunction = newMapping()
val objectToInstanceField = newMapping()
val classToSyntheticPrimaryConstructor = newMapping()
val privateMemberToCorrespondingStatic = newMapping()
val constructorToInitFunction = newMapping()
val enumEntryToGetInstanceFun = newMapping()
val enumEntryToInstanceField = newMapping()
val enumConstructorToNewConstructor = newMapping()
val enumClassToCorrespondingEnumEntry = newMapping()
val enumConstructorOldToNewValueParameters = newMapping()
val enumEntryToCorrespondingField = newMapping()
val enumClassToInitEntryInstancesFun = newMapping()
// Triggers `StageController.lazyLower` on access
override fun newMapping(): Mapping.Delegate = object : Mapping.Delegate() {
private val map: MutableMap = mutableMapOf()
override operator fun get(key: K): V? {
stageController.lazyLower(key)
return map[key]
}
override operator fun set(key: K, value: V?) {
stageController.lazyLower(key)
if (value == null) {
map.remove(key)
} else {
map[key] = value
}
}
}
}