From 28abc73f22807fde41dfd6381f5fd4f8f61db950 Mon Sep 17 00:00:00 2001 From: Alexey Tsvetkov Date: Fri, 15 Apr 2016 01:08:33 +0300 Subject: [PATCH] Pass reader in constructor to KotlinAnnotationProvider --- .../annotation/AnnotationProcessorWrapper.kt | 4 ++-- .../annotation/KotlinAnnotationProvider.kt | 20 +++++-------------- .../annotation/AnnotationListParseTest.kt | 2 +- 3 files changed, 8 insertions(+), 18 deletions(-) diff --git a/libraries/tools/kotlin-annotation-processing/src/main/kotlin/org/jetbrains/kotlin/annotation/AnnotationProcessorWrapper.kt b/libraries/tools/kotlin-annotation-processing/src/main/kotlin/org/jetbrains/kotlin/annotation/AnnotationProcessorWrapper.kt index 8345b38d033..9377eb67b75 100644 --- a/libraries/tools/kotlin-annotation-processing/src/main/kotlin/org/jetbrains/kotlin/annotation/AnnotationProcessorWrapper.kt +++ b/libraries/tools/kotlin-annotation-processing/src/main/kotlin/org/jetbrains/kotlin/annotation/AnnotationProcessorWrapper.kt @@ -97,10 +97,10 @@ public abstract class AnnotationProcessorWrapper( val annotationsFilePath = processingEnv.options[KAPT_ANNOTATION_OPTION] val annotationsFile = if (annotationsFilePath != null) File(annotationsFilePath) else null kotlinAnnotationsProvider = if (annotationsFile != null && annotationsFile.exists()) { - FileKotlinAnnotationProvider(annotationsFile) + KotlinAnnotationProvider(annotationsFile) } else { - EmptyKotlinAnnotationsProvider() + KotlinAnnotationProvider() } processor.init(processingEnv) diff --git a/libraries/tools/kotlin-annotation-processing/src/main/kotlin/org/jetbrains/kotlin/annotation/KotlinAnnotationProvider.kt b/libraries/tools/kotlin-annotation-processing/src/main/kotlin/org/jetbrains/kotlin/annotation/KotlinAnnotationProvider.kt index e8210c79671..cf301bbcf01 100644 --- a/libraries/tools/kotlin-annotation-processing/src/main/kotlin/org/jetbrains/kotlin/annotation/KotlinAnnotationProvider.kt +++ b/libraries/tools/kotlin-annotation-processing/src/main/kotlin/org/jetbrains/kotlin/annotation/KotlinAnnotationProvider.kt @@ -19,9 +19,8 @@ package org.jetbrains.kotlin.annotation import java.io.File import java.io.Reader import java.io.StringReader -import javax.tools.FileObject -public abstract class KotlinAnnotationProvider { +class KotlinAnnotationProvider(private val annotationsReader: Reader) { private companion object { val ANNOTATED_CLASS = "c" @@ -34,6 +33,9 @@ public abstract class KotlinAnnotationProvider { val CLASS_DECLARATION = "d" } + constructor(annotationsFile: File) : this(annotationsFile.reader().buffered()) + constructor() : this(StringReader("")) + public val annotatedKotlinElements: Map> by lazy { readAnnotations() } @@ -46,8 +48,6 @@ public abstract class KotlinAnnotationProvider { public val supportInheritedAnnotations: Boolean get() = kotlinClassesInternal.isNotEmpty() - protected abstract val serializedAnnotations: Reader - private fun readAnnotations(): MutableMap> { val shortenedAnnotationCache = hashMapOf() val shortenedPackageNameCache = hashMapOf() @@ -65,7 +65,7 @@ public abstract class KotlinAnnotationProvider { val annotatedKotlinElements: MutableMap> = hashMapOf() - serializedAnnotations.useLines { lines -> + annotationsReader.useLines { lines -> for (line in lines) { if (line.isEmpty()) continue val lineParts = line.split(' ') @@ -116,14 +116,4 @@ public abstract class KotlinAnnotationProvider { val id = lineParts[2] cache.put(id, name) } - -} - -public class FileKotlinAnnotationProvider(val annotationsFile: File): KotlinAnnotationProvider() { - override val serializedAnnotations: Reader - get() = annotationsFile.reader().buffered() -} - -public class EmptyKotlinAnnotationsProvider : KotlinAnnotationProvider() { - override val serializedAnnotations = StringReader("") } \ No newline at end of file diff --git a/libraries/tools/kotlin-annotation-processing/src/test/kotlin/org/jetbrains/kotlin/annotation/AnnotationListParseTest.kt b/libraries/tools/kotlin-annotation-processing/src/test/kotlin/org/jetbrains/kotlin/annotation/AnnotationListParseTest.kt index 7e1e726c134..1156940e6dc 100644 --- a/libraries/tools/kotlin-annotation-processing/src/test/kotlin/org/jetbrains/kotlin/annotation/AnnotationListParseTest.kt +++ b/libraries/tools/kotlin-annotation-processing/src/test/kotlin/org/jetbrains/kotlin/annotation/AnnotationListParseTest.kt @@ -53,7 +53,7 @@ public class AnnotationListParseTest { assertTrue(annotationsFile.absolutePath + " does not exist.", annotationsFile.exists()) - val annotationProvider = FileKotlinAnnotationProvider(annotationsFile) + val annotationProvider = KotlinAnnotationProvider(annotationsFile) val parsedAnnotations = annotationProvider.annotatedKotlinElements val actualAnnotations = StringBuilder()