Refactoring: move IC classes into separate package

This commit is contained in:
Alexey Tsvetkov
2016-10-05 17:32:13 +03:00
parent 3bcd6e9a93
commit 368e48780e
18 changed files with 79 additions and 40 deletions
@@ -26,8 +26,8 @@ import org.jetbrains.kotlin.com.intellij.openapi.util.io.ZipFileCache
import org.jetbrains.kotlin.com.intellij.openapi.vfs.impl.ZipHandler import org.jetbrains.kotlin.com.intellij.openapi.vfs.impl.ZipHandler
import org.jetbrains.kotlin.com.intellij.openapi.vfs.impl.jar.CoreJarFileSystem import org.jetbrains.kotlin.com.intellij.openapi.vfs.impl.jar.CoreJarFileSystem
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile
import org.jetbrains.kotlin.gradle.tasks.ArtifactDifferenceRegistry import org.jetbrains.kotlin.incremental.multiproject.ArtifactDifferenceRegistry
import org.jetbrains.kotlin.gradle.tasks.ArtifactDifferenceRegistryProvider import org.jetbrains.kotlin.incremental.multiproject.ArtifactDifferenceRegistryProvider
import org.jetbrains.kotlin.gradle.tasks.incremental.BuildCacheStorage import org.jetbrains.kotlin.gradle.tasks.incremental.BuildCacheStorage
import java.io.File import java.io.File
@@ -26,7 +26,7 @@ import org.jetbrains.kotlin.gradle.internal.Kapt2KotlinGradleSubplugin
import org.jetbrains.kotlin.gradle.internal.initKapt import org.jetbrains.kotlin.gradle.internal.initKapt
import org.jetbrains.kotlin.gradle.plugin.android.AndroidGradleWrapper import org.jetbrains.kotlin.gradle.plugin.android.AndroidGradleWrapper
import org.jetbrains.kotlin.gradle.tasks.* import org.jetbrains.kotlin.gradle.tasks.*
import org.jetbrains.kotlin.gradle.tasks.incremental.android.ArtifactDifferenceRegistryProviderAndroidWrapper import org.jetbrains.kotlin.incremental.multiproject.ArtifactDifferenceRegistryProviderAndroidWrapper
import org.jetbrains.kotlin.gradle.tasks.incremental.configureMultiProjectIncrementalCompilation import org.jetbrains.kotlin.gradle.tasks.incremental.configureMultiProjectIncrementalCompilation
import java.io.File import java.io.File
import java.net.URL import java.net.URL
@@ -32,6 +32,7 @@ import org.jetbrains.kotlin.gradle.dsl.*
import org.jetbrains.kotlin.incremental.* import org.jetbrains.kotlin.incremental.*
import org.jetbrains.kotlin.incremental.components.LookupTracker import org.jetbrains.kotlin.incremental.components.LookupTracker
import org.jetbrains.kotlin.incremental.components.SourceRetentionAnnotationHandler import org.jetbrains.kotlin.incremental.components.SourceRetentionAnnotationHandler
import org.jetbrains.kotlin.incremental.multiproject.ArtifactDifferenceRegistryProvider
import org.jetbrains.kotlin.modules.TargetId import org.jetbrains.kotlin.modules.TargetId
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.progress.CompilationCanceledStatus import org.jetbrains.kotlin.progress.CompilationCanceledStatus
@@ -1,9 +1,26 @@
package org.jetbrains.kotlin.gradle.tasks.incremental /*
* Copyright 2010-2016 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.kotlin.incremental
import org.gradle.api.logging.Logging import org.gradle.api.logging.Logging
import org.jetbrains.kotlin.gradle.plugin.kotlinDebug import org.jetbrains.kotlin.gradle.plugin.kotlinDebug
import org.jetbrains.kotlin.gradle.tasks.ArtifactDifferenceRegistry import org.jetbrains.kotlin.incremental.multiproject.ArtifactDifferenceRegistry
import org.jetbrains.kotlin.gradle.tasks.ArtifactDifferenceRegistryProvider import org.jetbrains.kotlin.incremental.multiproject.ArtifactDifferenceRegistryProvider
import org.jetbrains.kotlin.incremental.multiproject.ArtifactDifferenceRegistryImpl
import org.jetbrains.kotlin.incremental.CacheVersion import org.jetbrains.kotlin.incremental.CacheVersion
import org.jetbrains.kotlin.incremental.stackTraceStr import org.jetbrains.kotlin.incremental.stackTraceStr
import org.jetbrains.kotlin.incremental.storage.BasicMapsOwner import org.jetbrains.kotlin.incremental.storage.BasicMapsOwner
@@ -1,4 +1,4 @@
package org.jetbrains.kotlin.gradle.tasks package org.jetbrains.kotlin.incremental
import java.io.* import java.io.*
@@ -1,4 +1,4 @@
package org.jetbrains.kotlin.gradle.tasks package org.jetbrains.kotlin.incremental
import org.gradle.api.tasks.incremental.IncrementalTaskInputs import org.gradle.api.tasks.incremental.IncrementalTaskInputs
import java.io.File import java.io.File
@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.kotlin.gradle.tasks package org.jetbrains.kotlin.incremental
import org.gradle.api.logging.Logging import org.gradle.api.logging.Logging
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
@@ -26,6 +26,8 @@ import org.jetbrains.kotlin.com.intellij.psi.PsiFile
import org.jetbrains.kotlin.com.intellij.psi.PsiFileFactory import org.jetbrains.kotlin.com.intellij.psi.PsiFileFactory
import org.jetbrains.kotlin.com.intellij.psi.PsiJavaFile import org.jetbrains.kotlin.com.intellij.psi.PsiJavaFile
import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.gradle.tasks.kotlinDebug
import org.jetbrains.kotlin.incremental.ChangesEither
import org.jetbrains.kotlin.incremental.LookupSymbol import org.jetbrains.kotlin.incremental.LookupSymbol
import org.jetbrains.kotlin.incremental.snapshots.FileCollectionDiff import org.jetbrains.kotlin.incremental.snapshots.FileCollectionDiff
import java.io.File import java.io.File
@@ -1,4 +1,4 @@
package org.jetbrains.kotlin.gradle.tasks package org.jetbrains.kotlin.incremental
import org.jetbrains.kotlin.incremental.LookupSymbol import org.jetbrains.kotlin.incremental.LookupSymbol
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
@@ -1,7 +1,7 @@
package org.jetbrains.kotlin.gradle.tasks package org.jetbrains.kotlin.incremental
import org.gradle.api.logging.Logging import org.gradle.api.logging.Logging
import org.jetbrains.kotlin.incremental.IncReporter import org.jetbrains.kotlin.gradle.tasks.kotlinDebug
import java.io.File import java.io.File
internal class GradleIncReporter(private val projectRootFile: File) : IncReporter() { internal class GradleIncReporter(private val projectRootFile: File) : IncReporter() {
@@ -14,10 +14,11 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.kotlin.gradle.tasks package org.jetbrains.kotlin.incremental
import org.gradle.api.logging.Logging import org.gradle.api.logging.Logging
import org.jetbrains.kotlin.build.GeneratedJvmClass import org.jetbrains.kotlin.build.GeneratedJvmClass
import org.jetbrains.kotlin.gradle.plugin.kotlinDebug
import org.jetbrains.kotlin.incremental.CompilationResult import org.jetbrains.kotlin.incremental.CompilationResult
import org.jetbrains.kotlin.incremental.IncrementalCacheImpl import org.jetbrains.kotlin.incremental.IncrementalCacheImpl
import org.jetbrains.kotlin.incremental.dumpCollection import org.jetbrains.kotlin.incremental.dumpCollection
@@ -30,34 +31,34 @@ import org.jetbrains.kotlin.incremental.storage.StringCollectionExternalizer
import org.jetbrains.kotlin.modules.TargetId import org.jetbrains.kotlin.modules.TargetId
import java.io.File import java.io.File
internal class GradleIncrementalCacheImpl(targetDataRoot: File, targetOutputDir: File?, target: TargetId) : IncrementalCacheImpl<TargetId>(targetDataRoot, targetOutputDir, target) { internal class GradleIncrementalCacheImpl(targetDataRoot: java.io.File, targetOutputDir: java.io.File?, target: org.jetbrains.kotlin.modules.TargetId) : org.jetbrains.kotlin.incremental.IncrementalCacheImpl<org.jetbrains.kotlin.modules.TargetId>(targetDataRoot, targetOutputDir, target) {
companion object { companion object {
private val SOURCES_TO_CLASSFILES = "sources-to-classfiles" private val SOURCES_TO_CLASSFILES = "sources-to-classfiles"
private val FILE_SNAPSHOT = "file-snapshot" private val FILE_SNAPSHOT = "file-snapshot"
} }
private val log = Logging.getLogger(this.javaClass) private val log = org.gradle.api.logging.Logging.getLogger(this.javaClass)
private val sourceToClassfilesMap = registerMap(SourceToClassfilesMap(SOURCES_TO_CLASSFILES.storageFile)) private val sourceToClassfilesMap = registerMap(SourceToClassfilesMap(org.jetbrains.kotlin.incremental.GradleIncrementalCacheImpl.Companion.SOURCES_TO_CLASSFILES.storageFile))
private val fileSnapshotMap = registerMap(FileSnapshotMap(FILE_SNAPSHOT.storageFile)) private val fileSnapshotMap = registerMap(org.jetbrains.kotlin.incremental.snapshots.FileSnapshotMap(FILE_SNAPSHOT.storageFile))
fun compareAndUpdateFileSnapshots(files: Iterable<File>): FileCollectionDiff = fun compareAndUpdateFileSnapshots(files: Iterable<java.io.File>): org.jetbrains.kotlin.incremental.snapshots.FileCollectionDiff =
fileSnapshotMap.compareAndUpdate(files, SimpleFileSnapshotProviderImpl()) fileSnapshotMap.compareAndUpdate(files, org.jetbrains.kotlin.incremental.snapshots.SimpleFileSnapshotProviderImpl())
fun removeClassfilesBySources(sources: Iterable<File>): Unit = fun removeClassfilesBySources(sources: Iterable<java.io.File>): Unit =
sources.forEach { sourceToClassfilesMap.remove(it) } sources.forEach { sourceToClassfilesMap.remove(it) }
override fun saveFileToCache(generatedClass: GeneratedJvmClass<TargetId>): CompilationResult { override fun saveFileToCache(generatedClass: org.jetbrains.kotlin.build.GeneratedJvmClass<org.jetbrains.kotlin.modules.TargetId>): org.jetbrains.kotlin.incremental.CompilationResult {
generatedClass.sourceFiles.forEach { sourceToClassfilesMap.add(it, generatedClass.outputFile) } generatedClass.sourceFiles.forEach { sourceToClassfilesMap.add(it, generatedClass.outputFile) }
return super.saveFileToCache(generatedClass) return super.saveFileToCache(generatedClass)
} }
inner class SourceToClassfilesMap(storageFile: File) : BasicStringMap<Collection<String>>(storageFile, PathStringDescriptor, StringCollectionExternalizer) { inner class SourceToClassfilesMap(storageFile: java.io.File) : org.jetbrains.kotlin.incremental.storage.BasicStringMap<Collection<String>>(storageFile, org.jetbrains.kotlin.incremental.storage.PathStringDescriptor, org.jetbrains.kotlin.incremental.storage.StringCollectionExternalizer) {
fun add(sourceFile: File, classFile: File) { fun add(sourceFile: java.io.File, classFile: java.io.File) {
storage.append(sourceFile.absolutePath, classFile.absolutePath) storage.append(sourceFile.absolutePath, classFile.absolutePath)
} }
operator fun get(sourceFile: File): Collection<File> = operator fun get(sourceFile: java.io.File): Collection<java.io.File> =
storage[sourceFile.absolutePath].orEmpty().map(::File) storage[sourceFile.absolutePath].orEmpty().map(::File)
override fun dumpValue(value: Collection<String>) = value.dumpCollection() override fun dumpValue(value: Collection<String>) = value.dumpCollection()
@@ -1,4 +1,4 @@
package org.jetbrains.kotlin.gradle.tasks package org.jetbrains.kotlin.incremental
import org.jetbrains.kotlin.incremental.LookupStorage import org.jetbrains.kotlin.incremental.LookupStorage
import org.jetbrains.kotlin.modules.TargetId import org.jetbrains.kotlin.modules.TargetId
@@ -1,4 +1,4 @@
package org.jetbrains.kotlin.gradle.tasks package org.jetbrains.kotlin.incremental
import org.jetbrains.kotlin.annotation.AnnotationFileUpdater import org.jetbrains.kotlin.annotation.AnnotationFileUpdater
import org.jetbrains.kotlin.annotation.SourceAnnotationsRegistry import org.jetbrains.kotlin.annotation.SourceAnnotationsRegistry
@@ -14,8 +14,10 @@ import org.jetbrains.kotlin.com.intellij.util.io.PersistentEnumeratorBase
import org.jetbrains.kotlin.compilerRunner.ArgumentUtils import org.jetbrains.kotlin.compilerRunner.ArgumentUtils
import org.jetbrains.kotlin.compilerRunner.OutputItemsCollector import org.jetbrains.kotlin.compilerRunner.OutputItemsCollector
import org.jetbrains.kotlin.compilerRunner.OutputItemsCollectorImpl import org.jetbrains.kotlin.compilerRunner.OutputItemsCollectorImpl
import org.jetbrains.kotlin.incremental.* import org.jetbrains.kotlin.incremental.ChangedFiles
import org.jetbrains.kotlin.incremental.components.LookupTracker import org.jetbrains.kotlin.incremental.components.LookupTracker
import org.jetbrains.kotlin.incremental.multiproject.ArtifactDifference
import org.jetbrains.kotlin.incremental.multiproject.ArtifactDifferenceRegistryProvider
import org.jetbrains.kotlin.incremental.snapshots.FileCollectionDiff import org.jetbrains.kotlin.incremental.snapshots.FileCollectionDiff
import org.jetbrains.kotlin.modules.TargetId import org.jetbrains.kotlin.modules.TargetId
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
@@ -1,4 +1,4 @@
package org.jetbrains.kotlin.gradle.tasks package org.jetbrains.kotlin.incremental
import java.io.File import java.io.File
@@ -1,4 +1,4 @@
package org.jetbrains.kotlin.gradle.tasks package org.jetbrains.kotlin.incremental
import org.jetbrains.kotlin.config.IncrementalCompilation import org.jetbrains.kotlin.config.IncrementalCompilation
import org.jetbrains.kotlin.incremental.CacheVersion import org.jetbrains.kotlin.incremental.CacheVersion
@@ -1,4 +1,20 @@
package org.jetbrains.kotlin.gradle.tasks.incremental /*
* Copyright 2010-2016 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.kotlin.incremental
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.api.Task import org.gradle.api.Task
@@ -7,8 +23,8 @@ import org.gradle.api.tasks.compile.AbstractCompile
import org.gradle.api.tasks.compile.JavaCompile import org.gradle.api.tasks.compile.JavaCompile
import org.jetbrains.kotlin.com.intellij.openapi.util.io.FileUtil import org.jetbrains.kotlin.com.intellij.openapi.util.io.FileUtil
import org.jetbrains.kotlin.gradle.plugin.kotlinDebug import org.jetbrains.kotlin.gradle.plugin.kotlinDebug
import org.jetbrains.kotlin.gradle.tasks.ArtifactDifferenceRegistry import org.jetbrains.kotlin.incremental.multiproject.ArtifactDifferenceRegistry
import org.jetbrains.kotlin.gradle.tasks.ArtifactDifferenceRegistryProvider import org.jetbrains.kotlin.incremental.multiproject.ArtifactDifferenceRegistryProvider
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import java.io.File import java.io.File
@@ -1,4 +1,4 @@
package org.jetbrains.kotlin.gradle.tasks package org.jetbrains.kotlin.incremental.multiproject
import org.jetbrains.kotlin.incremental.DirtyData import org.jetbrains.kotlin.incremental.DirtyData
import org.jetbrains.kotlin.incremental.IncReporter import org.jetbrains.kotlin.incremental.IncReporter
@@ -14,11 +14,11 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.kotlin.gradle.tasks.incremental.android package org.jetbrains.kotlin.incremental.multiproject
import org.jetbrains.kotlin.gradle.tasks.ArtifactDifference import org.jetbrains.kotlin.incremental.multiproject.ArtifactDifference
import org.jetbrains.kotlin.gradle.tasks.ArtifactDifferenceRegistry import org.jetbrains.kotlin.incremental.multiproject.ArtifactDifferenceRegistry
import org.jetbrains.kotlin.gradle.tasks.ArtifactDifferenceRegistryProvider import org.jetbrains.kotlin.incremental.multiproject.ArtifactDifferenceRegistryProvider
import java.io.File import java.io.File
internal class ArtifactDifferenceRegistryProviderAndroidWrapper( internal class ArtifactDifferenceRegistryProviderAndroidWrapper(
@@ -1,8 +1,8 @@
package org.jetbrains.kotlin.gradle.tasks.incremental package org.jetbrains.kotlin.incremental.multiproject
import org.jetbrains.kotlin.com.intellij.util.io.DataExternalizer import org.jetbrains.kotlin.com.intellij.util.io.DataExternalizer
import org.jetbrains.kotlin.gradle.tasks.ArtifactDifference import org.jetbrains.kotlin.incremental.multiproject.ArtifactDifference
import org.jetbrains.kotlin.gradle.tasks.ArtifactDifferenceRegistry import org.jetbrains.kotlin.incremental.multiproject.ArtifactDifferenceRegistry
import org.jetbrains.kotlin.incremental.DirtyData import org.jetbrains.kotlin.incremental.DirtyData
import org.jetbrains.kotlin.incremental.LookupSymbol import org.jetbrains.kotlin.incremental.LookupSymbol
import org.jetbrains.kotlin.incremental.storage.BasicStringMap import org.jetbrains.kotlin.incremental.storage.BasicStringMap