All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jetbrains.kotlin.ir.backend.js.JsMapping.kt Maven / Gradle / Ivy

There is a newer version: 2.0.0
Show newest version
/*
 * 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
            }
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy