aboutsummaryrefslogtreecommitdiff
path: root/java/dagger/hilt/processor/internal/Processors.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/dagger/hilt/processor/internal/Processors.java')
-rw-r--r--java/dagger/hilt/processor/internal/Processors.java23
1 files changed, 23 insertions, 0 deletions
diff --git a/java/dagger/hilt/processor/internal/Processors.java b/java/dagger/hilt/processor/internal/Processors.java
index 6fc1dfa24..f33462dad 100644
--- a/java/dagger/hilt/processor/internal/Processors.java
+++ b/java/dagger/hilt/processor/internal/Processors.java
@@ -22,6 +22,7 @@ import static com.google.auto.common.MoreElements.asVariable;
import static com.google.common.base.Preconditions.checkNotNull;
import static dagger.internal.codegen.extension.DaggerCollectors.toOptional;
import static javax.lang.model.element.Modifier.ABSTRACT;
+import static javax.lang.model.element.Modifier.PUBLIC;
import static javax.lang.model.element.Modifier.STATIC;
import com.google.auto.common.AnnotationMirrors;
@@ -42,6 +43,7 @@ import com.google.common.collect.Multimap;
import com.google.common.collect.SetMultimap;
import com.squareup.javapoet.AnnotationSpec;
import com.squareup.javapoet.ClassName;
+import com.squareup.javapoet.JavaFile;
import com.squareup.javapoet.MethodSpec;
import com.squareup.javapoet.ParameterSpec;
import com.squareup.javapoet.ParameterizedTypeName;
@@ -49,6 +51,7 @@ import com.squareup.javapoet.TypeName;
import com.squareup.javapoet.TypeSpec;
import dagger.internal.codegen.extension.DaggerStreams;
import dagger.internal.codegen.kotlin.KotlinMetadataUtil;
+import java.io.IOException;
import java.lang.annotation.Annotation;
import java.util.LinkedHashSet;
import java.util.List;
@@ -89,6 +92,26 @@ public final class Processors {
private static final String JAVA_CLASS = "java.lang.Class";
+ public static void generateAggregatingClass(
+ String aggregatingPackage,
+ AnnotationSpec aggregatingAnnotation,
+ TypeElement element,
+ Class<?> generatedAnnotationClass,
+ ProcessingEnvironment env) throws IOException {
+ ClassName name = ClassName.get(aggregatingPackage, "_" + getFullEnclosedName(element));
+ TypeSpec.Builder builder =
+ TypeSpec.classBuilder(name)
+ .addModifiers(PUBLIC)
+ .addOriginatingElement(element)
+ .addAnnotation(aggregatingAnnotation)
+ .addJavadoc("This class should only be referenced by generated code!")
+ .addJavadoc("This class aggregates information across multiple compilations.\n");;
+
+ addGeneratedAnnotation(builder, env, generatedAnnotationClass);
+
+ JavaFile.builder(name.packageName(), builder.build()).build().writeTo(env.getFiler());
+ }
+
/** Returns a map from {@link AnnotationMirror} attribute name to {@link AnnotationValue}s */
public static ImmutableMap<String, AnnotationValue> getAnnotationValues(Elements elements,
AnnotationMirror annotation) {