Skip to content

Commit

Permalink
Remove usages of .java(), toJavac(), and toXProcessing() which …
Browse files Browse the repository at this point in the history
…were needed during the XProcessing migration.

RELNOTES=N/A
PiperOrigin-RevId: 447055911
  • Loading branch information
bcorso authored and Dagger Team committed May 6, 2022
1 parent e793595 commit b60b8e5
Show file tree
Hide file tree
Showing 23 changed files with 70 additions and 101 deletions.
17 changes: 5 additions & 12 deletions java/dagger/internal/codegen/AssistedFactoryProcessingStep.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@

package dagger.internal.codegen;

import static androidx.room.compiler.processing.compat.XConverters.toJavac;
import static com.google.common.collect.Iterables.getOnlyElement;
import static dagger.internal.codegen.binding.AssistedInjectionAnnotations.assistedFactoryMethods;
import static dagger.internal.codegen.binding.AssistedInjectionAnnotations.assistedInjectedConstructors;
Expand All @@ -26,10 +25,12 @@
import static dagger.internal.codegen.javapoet.TypeNames.INSTANCE_FACTORY;
import static dagger.internal.codegen.javapoet.TypeNames.providerOf;
import static dagger.internal.codegen.langmodel.Accessibility.accessibleType;
import static dagger.internal.codegen.xprocessing.MethodSpecs.overriding;
import static dagger.internal.codegen.xprocessing.XElements.asTypeElement;
import static dagger.internal.codegen.xprocessing.XElements.getSimpleName;
import static dagger.internal.codegen.xprocessing.XMethodElements.hasTypeParameters;
import static dagger.internal.codegen.xprocessing.XProcessingEnvs.isPreJava8SourceVersion;
import static dagger.internal.codegen.xprocessing.XTypeElements.typeVariableNames;
import static dagger.internal.codegen.xprocessing.XTypes.isDeclared;
import static java.util.stream.Collectors.joining;
import static javax.lang.model.element.Modifier.FINAL;
Expand All @@ -54,7 +55,6 @@
import com.squareup.javapoet.ParameterizedTypeName;
import com.squareup.javapoet.TypeName;
import com.squareup.javapoet.TypeSpec;
import com.squareup.javapoet.TypeVariableName;
import dagger.internal.codegen.base.SourceFileGenerationException;
import dagger.internal.codegen.base.SourceFileGenerator;
import dagger.internal.codegen.binding.AssistedInjectionAnnotations;
Expand All @@ -66,7 +66,6 @@
import dagger.internal.codegen.validation.SuperficialValidator;
import dagger.internal.codegen.validation.TypeCheckingProcessingStep;
import dagger.internal.codegen.validation.ValidationReport;
import dagger.internal.codegen.xprocessing.MethodSpecs;
import java.util.HashSet;
import java.util.Optional;
import java.util.Set;
Expand Down Expand Up @@ -268,10 +267,7 @@ public ImmutableList<TypeSpec.Builder> topLevelTypes(ProvisionBinding binding) {
TypeSpec.Builder builder =
TypeSpec.classBuilder(name)
.addModifiers(PUBLIC, FINAL)
.addTypeVariables(
toJavac(factory).getTypeParameters().stream()
.map(TypeVariableName::get)
.collect(toImmutableList()));
.addTypeVariables(typeVariableNames(factory));

if (factory.isInterface()) {
builder.addSuperinterface(factory.getType().getTypeName());
Expand All @@ -295,7 +291,7 @@ public ImmutableList<TypeSpec.Builder> topLevelTypes(ProvisionBinding binding) {
.addStatement("this.$1N = $1N", delegateFactoryParam)
.build())
.addMethod(
MethodSpecs.overriding(metadata.factoryMethod(), metadata.factoryType())
overriding(metadata.factoryMethod(), metadata.factoryType())
.addStatement(
"return $N.get($L)",
delegateFactoryParam,
Expand All @@ -310,10 +306,7 @@ public ImmutableList<TypeSpec.Builder> topLevelTypes(ProvisionBinding binding) {
MethodSpec.methodBuilder("create")
.addModifiers(PUBLIC, STATIC)
.addParameter(delegateFactoryParam)
.addTypeVariables(
toJavac(metadata.assistedInjectElement()).getTypeParameters().stream()
.map(TypeVariableName::get)
.collect(toImmutableList()))
.addTypeVariables(typeVariableNames(metadata.assistedInjectElement()))
.returns(providerOf(factory.getType().getTypeName()))
.addStatement(
"return $T.$Lcreate(new $T($N))",
Expand Down
4 changes: 1 addition & 3 deletions java/dagger/internal/codegen/ComponentProcessor.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
import androidx.room.compiler.processing.XProcessingEnvConfig;
import androidx.room.compiler.processing.XProcessingStep;
import androidx.room.compiler.processing.XRoundEnv;
import androidx.room.compiler.processing.compat.XConverters;
import androidx.room.compiler.processing.javac.JavacBasicAnnotationProcessor;
import com.google.auto.service.AutoService;
import com.google.common.annotations.VisibleForTesting;
Expand Down Expand Up @@ -210,8 +209,7 @@ static ImmutableList<XProcessingStep> processingSteps(

@Override
public void postRound(XProcessingEnv env, XRoundEnv roundEnv) {
// TODO(bcorso): Add a way to determine if processing is over without converting to Javac here.
if (!XConverters.toJavac(roundEnv).processingOver()) {
if (!roundEnv.isProcessingOver()) {
try {
injectBindingRegistry.generateSourcesForRequiredBindings(
factoryGenerator, membersInjectorGenerator);
Expand Down
16 changes: 6 additions & 10 deletions java/dagger/internal/codegen/binding/Binding.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,9 @@

package dagger.internal.codegen.binding;

import static androidx.room.compiler.processing.compat.XConverters.toJavac;
import static com.google.common.base.Suppliers.memoize;
import static javax.lang.model.element.Modifier.ABSTRACT;
import static javax.lang.model.element.Modifier.STATIC;
import static dagger.internal.codegen.xprocessing.XElements.isAbstract;
import static dagger.internal.codegen.xprocessing.XElements.isStatic;

import com.google.common.base.Supplier;
import com.google.common.collect.ImmutableSet;
Expand All @@ -28,8 +27,6 @@
import dagger.spi.model.DependencyRequest;
import dagger.spi.model.Scope;
import java.util.Optional;
import java.util.Set;
import javax.lang.model.element.Modifier;

/**
* An abstract type for classes representing a Dagger binding. Particularly, contains the element
Expand All @@ -44,11 +41,10 @@ public abstract class Binding extends BindingDeclaration {
* #contributingModule()}.
*/
public boolean requiresModuleInstance() {
if (!bindingElement().isPresent() || !contributingModule().isPresent()) {
return false;
}
Set<Modifier> modifiers = toJavac(bindingElement().get()).getModifiers();
return !modifiers.contains(ABSTRACT) && !modifiers.contains(STATIC);
return contributingModule().isPresent()
&& bindingElement().isPresent()
&& !isAbstract(bindingElement().get())
&& !isStatic(bindingElement().get());
}

/**
Expand Down
3 changes: 2 additions & 1 deletion java/dagger/internal/codegen/binding/BindingDeclaration.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

import static androidx.room.compiler.processing.compat.XConverters.toJavac;
import static dagger.internal.codegen.extension.Optionals.emptiesLast;
import static dagger.internal.codegen.xprocessing.XElements.getSimpleName;
import static java.util.Comparator.comparing;

import androidx.room.compiler.processing.XElement;
Expand Down Expand Up @@ -53,7 +54,7 @@ public abstract class BindingDeclaration {
.thenComparing(
(BindingDeclaration declaration) -> declaration.bindingElement(),
emptiesLast(
comparing((XElement element) -> toJavac(element).getSimpleName().toString())
comparing((XElement element) -> getSimpleName(element))
.thenComparing((XElement element) -> toJavac(element).asType().toString())));

/** The {@link Key} of this declaration. */
Expand Down
10 changes: 3 additions & 7 deletions java/dagger/internal/codegen/binding/BindingGraphFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@

package dagger.internal.codegen.binding;

import static com.google.auto.common.MoreTypes.isType;
import static com.google.auto.common.MoreTypes.isTypeOf;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;
import static dagger.internal.codegen.base.RequestKinds.getRequestKind;
Expand All @@ -26,6 +24,7 @@
import static dagger.internal.codegen.binding.SourceFiles.generatedMonitoringModuleName;
import static dagger.internal.codegen.xprocessing.XElements.getSimpleName;
import static dagger.internal.codegen.xprocessing.XTypes.isDeclared;
import static dagger.internal.codegen.xprocessing.XTypes.isTypeOf;
import static dagger.spi.model.BindingKind.ASSISTED_INJECTION;
import static dagger.spi.model.BindingKind.DELEGATE;
import static dagger.spi.model.BindingKind.INJECTION;
Expand All @@ -43,7 +42,6 @@
import com.google.common.collect.ImmutableSetMultimap;
import com.google.common.collect.Iterables;
import com.google.common.collect.Multimaps;
import dagger.MembersInjector;
import dagger.Reusable;
import dagger.internal.codegen.base.ClearableCache;
import dagger.internal.codegen.base.ContributionType;
Expand Down Expand Up @@ -406,16 +404,14 @@ ResolvedBindings lookUpBindings(Key requestKey) {
}

// Add members injector binding
if (isType(requestKey.type().java())
&& isTypeOf(MembersInjector.class, requestKey.type().java())) {
if (isTypeOf(requestKey.type().xprocessing(), TypeNames.MEMBERS_INJECTOR)) {
injectBindingRegistry
.getOrFindMembersInjectorProvisionBinding(requestKey)
.ifPresent(bindings::add);
}

// Add Assisted Factory binding
if (isType(requestKey.type().java())
&& isDeclared(requestKey.type().xprocessing())
if (isDeclared(requestKey.type().xprocessing())
&& isAssistedFactoryType(requestKey.type().xprocessing().getTypeElement())) {
bindings.add(
bindingFactory.assistedFactoryBinding(
Expand Down
8 changes: 2 additions & 6 deletions java/dagger/internal/codegen/binding/KeyFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@

package dagger.internal.codegen.binding;

import static androidx.room.compiler.processing.compat.XConverters.toJavac;
import static com.google.auto.common.MoreTypes.isType;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkState;
import static com.google.common.collect.Iterables.getOnlyElement;
Expand Down Expand Up @@ -140,10 +138,8 @@ private Key forBindingMethod(
XMethodType methodType = method.asMemberOf(contributingModule.getType());
ContributionType contributionType = ContributionType.fromBindingElement(method);
XType returnType = methodType.getReturnType();
if (frameworkClassName.isPresent()
&& frameworkClassName.get().equals(TypeNames.PRODUCER)
&& isType(toJavac(returnType))) {
if (isFutureType(methodType.getReturnType())) {
if (frameworkClassName.isPresent() && frameworkClassName.get().equals(TypeNames.PRODUCER)) {
if (isFutureType(returnType)) {
returnType = getOnlyElement(returnType.getTypeArguments());
} else if (contributionType.equals(ContributionType.SET_VALUES)
&& SetType.isSet(returnType)) {
Expand Down
2 changes: 1 addition & 1 deletion java/dagger/internal/codegen/binding/KeyVariableNamer.java
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ public static String name(Key key) {

if (key.qualifier().isPresent()) {
// TODO(gak): Use a better name for fields with qualifiers with members.
builder.append(key.qualifier().get().java().getAnnotationType().asElement().getSimpleName());
builder.append(getSimpleName(key.qualifier().get().xprocessing().getType().getTypeElement()));
}

typeNamer(key.type().xprocessing(), builder);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@

package dagger.internal.codegen.binding;

import static androidx.room.compiler.processing.compat.XConverters.toJavac;
import static com.google.common.base.Preconditions.checkNotNull;
import static dagger.internal.codegen.xprocessing.XElements.closestEnclosingTypeElement;
import static dagger.internal.codegen.xprocessing.XElements.getSimpleName;
import static dagger.internal.codegen.xprocessing.XElements.isPrivate;
import static java.util.stream.Collectors.toList;

import androidx.room.compiler.processing.XElement;
Expand All @@ -34,7 +34,6 @@
import dagger.spi.model.DependencyRequest;
import dagger.spi.model.Key;
import java.util.Optional;
import javax.lang.model.element.Modifier;

/** Represents the full members injection of a particular type. */
@AutoValue
Expand Down Expand Up @@ -130,7 +129,7 @@ public enum Kind {
public int indexAmongAtInjectMembersWithSameSimpleName() {
return enclosingTypeElement().getEnclosedElements().stream()
.filter(InjectionAnnotations::hasInjectAnnotation)
.filter(element -> !toJavac(element).getModifiers().contains(Modifier.PRIVATE))
.filter(element -> !isPrivate(element))
.filter(element -> getSimpleName(element).equals(getSimpleName(this.element())))
.collect(toList())
.indexOf(element());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,8 @@

package dagger.internal.codegen.bindinggraphvalidation;

import static androidx.room.compiler.processing.compat.XConverters.toXProcessing;
import static com.google.auto.common.MoreTypes.asTypeElement;
import static dagger.spi.model.BindingKind.INJECTION;

import androidx.room.compiler.processing.XProcessingEnv;
import dagger.internal.codegen.validation.InjectValidator;
import dagger.internal.codegen.validation.ValidationReport;
import dagger.internal.codegen.validation.ValidationReport.Item;
Expand All @@ -32,13 +29,10 @@

/** Validates bindings from {@code @Inject}-annotated constructors. */
final class InjectBindingValidator implements BindingGraphPlugin {

private final XProcessingEnv processingEnv;
private final InjectValidator injectValidator;

@Inject
InjectBindingValidator(XProcessingEnv processingEnv, InjectValidator injectValidator) {
this.processingEnv = processingEnv;
InjectBindingValidator(InjectValidator injectValidator) {
this.injectValidator = injectValidator.whenGeneratingCode();
}

Expand All @@ -56,8 +50,7 @@ public void visitGraph(BindingGraph bindingGraph, DiagnosticReporter diagnosticR

private void validateInjectionBinding(Binding node, DiagnosticReporter diagnosticReporter) {
ValidationReport typeReport =
injectValidator.validate(
toXProcessing(asTypeElement(node.key().type().java()), processingEnv));
injectValidator.validate(node.key().type().xprocessing().getTypeElement());
for (Item item : typeReport.allItems()) {
diagnosticReporter.reportBinding(item.kind(), node, item.message());
}
Expand Down
14 changes: 7 additions & 7 deletions java/dagger/internal/codegen/langmodel/Accessibility.java
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ public static boolean isTypePubliclyAccessible(XType type) {
}

/** Returns true if the given type can be referenced from any package. */
public static boolean isTypePubliclyAccessible(TypeMirror type) {
private static boolean isTypePubliclyAccessible(TypeMirror type) {
return type.accept(new TypeAccessibilityVisitor(Optional.empty()), null);
}

Expand All @@ -81,7 +81,7 @@ public static boolean isTypeAccessibleFrom(XType type, String packageName) {
}

/** Returns true if the given type can be referenced from code in the given package. */
public static boolean isTypeAccessibleFrom(TypeMirror type, String packageName) {
private static boolean isTypeAccessibleFrom(TypeMirror type, String packageName) {
return type.accept(new TypeAccessibilityVisitor(Optional.of(packageName)), null);
}

Expand Down Expand Up @@ -164,7 +164,7 @@ public static boolean isElementPubliclyAccessible(XElement element) {
}

/** Returns true if the given element can be referenced from any package. */
public static boolean isElementPubliclyAccessible(Element element) {
private static boolean isElementPubliclyAccessible(Element element) {
return element.accept(new ElementAccessibilityVisitor(Optional.empty()), null);
}

Expand All @@ -177,7 +177,7 @@ public static boolean isElementAccessibleFrom(XElement element, String packageNa

/** Returns true if the given element can be referenced from code in the given package. */
// TODO(gak): account for protected
public static boolean isElementAccessibleFrom(Element element, String packageName) {
private static boolean isElementAccessibleFrom(Element element, String packageName) {
return element.accept(new ElementAccessibilityVisitor(Optional.of(packageName)), null);
}

Expand All @@ -187,7 +187,7 @@ public static boolean isElementAccessibleFromOwnPackage(XElement element) {
}

/** Returns true if the given element can be referenced from other code in its own package. */
public static boolean isElementAccessibleFromOwnPackage(Element element) {
private static boolean isElementAccessibleFromOwnPackage(Element element) {
return isElementAccessibleFrom(element, getPackage(element).getQualifiedName().toString());
}

Expand Down Expand Up @@ -257,7 +257,7 @@ public static boolean isRawTypeAccessible(XType type, String requestingPackage)
}

/** Returns true if the raw type of {@code type} is accessible from the given package. */
public static boolean isRawTypeAccessible(TypeMirror type, String requestingPackage) {
private static boolean isRawTypeAccessible(TypeMirror type, String requestingPackage) {
return type.getKind() == TypeKind.DECLARED
? isElementAccessibleFrom(asElement(type), requestingPackage)
: isTypeAccessibleFrom(type, requestingPackage);
Expand All @@ -269,7 +269,7 @@ public static boolean isRawTypePubliclyAccessible(XType type) {
}

/** Returns true if the raw type of {@code type} is accessible from any package. */
public static boolean isRawTypePubliclyAccessible(TypeMirror type) {
private static boolean isRawTypePubliclyAccessible(TypeMirror type) {
return type.getKind() == TypeKind.DECLARED
? isElementPubliclyAccessible(asElement(type))
: isTypePubliclyAccessible(type);
Expand Down
10 changes: 3 additions & 7 deletions java/dagger/internal/codegen/validation/InjectValidator.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@

package dagger.internal.codegen.validation;

import static androidx.room.compiler.processing.compat.XConverters.toXProcessing;
import static com.google.common.collect.Iterables.getOnlyElement;
import static dagger.internal.codegen.base.Util.reentrantComputeIfAbsent;
import static dagger.internal.codegen.binding.AssistedInjectionAnnotations.assistedInjectedConstructors;
Expand Down Expand Up @@ -207,10 +206,7 @@ private ValidationReport validateConstructor(XConstructorElement constructorElem
}

for (Scope scope : injectionAnnotations.getScopes(constructorElement)) {
builder.addError(
scopeErrorMsg,
constructorElement,
toXProcessing(scope.scopeAnnotation().java(), processingEnv));
builder.addError(scopeErrorMsg, constructorElement, scope.scopeAnnotation().xprocessing());
}
}

Expand Down Expand Up @@ -256,14 +252,14 @@ private ValidationReport validateConstructor(XConstructorElement constructorElem
builder.addError(
"A type with an @AssistedInject-annotated constructor cannot be scoped",
enclosingElement,
toXProcessing(scope.scopeAnnotation().java(), processingEnv));
scope.scopeAnnotation().xprocessing());
}
} else if (scopes.size() > 1) {
for (Scope scope : scopes) {
builder.addError(
"A single binding may not declare more than one @Scope",
enclosingElement,
toXProcessing(scope.scopeAnnotation().java(), processingEnv));
scope.scopeAnnotation().xprocessing());
}
}

Expand Down
Loading

0 comments on commit b60b8e5

Please sign in to comment.