override fun add()

in hot-reload-analysis/src/main/kotlin/org/jetbrains/compose/reload/analysis/MutableApplicationInfoImpl.kt [51:83]


    override fun add(info: ClassInfo) {
        classIndex[info.classId] = info

        methodIndex.putAll(info.methods)
        fieldIndex.putAll(info.fields)

        val allScopes = info.methods.values.map { it.rootScope }
            .withClosure<ScopeInfo> { scope -> scope.children }

        /* Fill groupIndex */
        allScopes.forEach { scope ->
            if (scope.group == null) return@forEach
            groupIndex.getOrPut(scope.group) { hashSetOf() }.add(scope)
        }

        /* Fill superIndex & superIndexInverse */
        val superClassifiers = listOfNotNull(info.superClass, *info.superInterfaces.toTypedArray()).toHashSet()
        superIndex[info.classId] = superClassifiers
        superClassifiers.forEach { superClassifier ->
            superIndexInverse.getOrPut(superClassifier) { hashSetOf() }.add(info.classId)
        }

        /* Fill dependency index */
        allScopes.forEach { scope ->
            scope.methodDependenciesList.forEach { methodId ->
                dependencyIndex.getOrPut(methodId) { hashSetOf() }.add(scope)
            }

            scope.fieldDependenciesList.forEach { fieldId ->
                dependencyIndex.getOrPut(fieldId) { hashSetOf() }.add(scope)
            }
        }
    }