Skip to content

Commit e0357b2

Browse files
bcorsoDagger Team
authored andcommitted
[XPoet Migration]: Migrate more CodeBlock usages to XCodeBlock.
This CL migrates `dagger/internal/codegen/javapoet/Expression` and `dagger/internal/codegen/javapoet/ExpressionType` to `dagger/internal/codegen/xprocessing/XExpression` and `dagger/internal/codegen/xprocessing/XExpressionType` respectively, and the associated class. RELNOTES=N/A PiperOrigin-RevId: 740072963
1 parent 9631868 commit e0357b2

File tree

121 files changed

+573
-568
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

121 files changed

+573
-568
lines changed

dagger-compiler/main/java/dagger/internal/codegen/binding/BUILD

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ java_library(
2727
deps = [
2828
"//dagger-compiler/main/java/dagger/internal/codegen/base",
2929
"//dagger-compiler/main/java/dagger/internal/codegen/compileroption",
30-
"//dagger-compiler/main/java/dagger/internal/codegen/javapoet",
3130
"//dagger-compiler/main/java/dagger/internal/codegen/kotlin",
3231
"//dagger-compiler/main/java/dagger/internal/codegen/model",
3332
"//dagger-compiler/main/java/dagger/internal/codegen/xprocessing",
@@ -38,7 +37,7 @@ java_library(
3837
"//third_party/java/guava/base",
3938
"//third_party/java/guava/collect",
4039
"//third_party/java/guava/graph",
41-
"//third_party/java/guava/util/concurrent",
4240
"//third_party/java/javapoet",
41+
"//third_party/java/jsr330_inject",
4342
],
4443
)

dagger-compiler/main/java/dagger/internal/codegen/binding/BindsTypeChecker.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
import androidx.room.compiler.processing.XTypeElement;
3030
import com.google.common.collect.ImmutableList;
3131
import dagger.internal.codegen.base.ContributionType;
32-
import dagger.internal.codegen.javapoet.ExpressionType;
32+
import dagger.internal.codegen.xprocessing.XExpressionType;
3333
import dagger.internal.codegen.xprocessing.XTypeElements;
3434
import javax.inject.Inject;
3535

@@ -53,7 +53,7 @@ public final class BindsTypeChecker {
5353
* ContributionType} context.
5454
*/
5555
public boolean isAssignable(
56-
ExpressionType rightHandSide, XType leftHandSide, ContributionType contributionType) {
56+
XExpressionType rightHandSide, XType leftHandSide, ContributionType contributionType) {
5757
return rightHandSide.isAssignableTo(desiredAssignableType(leftHandSide, contributionType));
5858
}
5959

dagger-compiler/main/java/dagger/internal/codegen/binding/FrameworkType.java

Lines changed: 42 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,13 @@
2121
import static com.google.common.base.CaseFormat.UPPER_UNDERSCORE;
2222

2323
import androidx.room.compiler.codegen.XClassName;
24+
import androidx.room.compiler.codegen.XCodeBlock;
2425
import androidx.room.compiler.codegen.XTypeName;
2526
import androidx.room.compiler.processing.XProcessingEnv;
26-
import com.squareup.javapoet.CodeBlock;
2727
import com.squareup.javapoet.ParameterizedTypeName;
2828
import dagger.internal.codegen.base.RequestKinds;
29-
import dagger.internal.codegen.javapoet.Expression;
30-
import dagger.internal.codegen.model.DependencyRequest;
3129
import dagger.internal.codegen.model.RequestKind;
30+
import dagger.internal.codegen.xprocessing.XExpression;
3231
import dagger.internal.codegen.xprocessing.XTypeNames;
3332
import java.util.Optional;
3433

@@ -37,49 +36,43 @@ public enum FrameworkType {
3736
/** A {@link javax.inject.Provider}. */
3837
PROVIDER {
3938
@Override
40-
public CodeBlock to(
39+
public XCodeBlock to(
4140
RequestKind requestKind,
42-
CodeBlock from) {
41+
XCodeBlock from) {
4342
switch (requestKind) {
4443
case INSTANCE:
45-
return CodeBlock.of("$L.get()", from);
44+
return XCodeBlock.of("%L.get()", from);
4645

4746
case LAZY:
48-
return CodeBlock.of(
49-
"$T.lazy($L)",
50-
toJavaPoet(
51-
XTypeNames.DOUBLE_CHECK),
47+
return XCodeBlock.of(
48+
"%T.lazy(%L)",
49+
XTypeNames.DOUBLE_CHECK,
5250
from);
5351

5452
case PROVIDER:
5553
return from;
5654

5755
case PROVIDER_OF_LAZY:
58-
return CodeBlock.of(
59-
"$T.create($L)",
60-
toJavaPoet(XTypeNames.PROVIDER_OF_LAZY),
61-
from);
56+
return XCodeBlock.of("%T.create(%L)", XTypeNames.PROVIDER_OF_LAZY, from);
6257

6358
case PRODUCER:
64-
return CodeBlock.of(
65-
"$T.producerFromProvider($L)",
66-
toJavaPoet(XTypeNames.PRODUCERS),
67-
from);
59+
return XCodeBlock.of("%T.producerFromProvider(%L)", XTypeNames.PRODUCERS, from);
6860

6961
case FUTURE:
70-
return CodeBlock.of(
71-
"$T.immediateFuture($L)",
72-
toJavaPoet(XTypeNames.FUTURES),
62+
return XCodeBlock.of(
63+
"%T.immediateFuture(%L)",
64+
XTypeNames.FUTURES,
7365
to(
7466
RequestKind.INSTANCE,
7567
from));
7668

7769
case PRODUCED:
78-
return CodeBlock.of(
79-
"$T.successful($L)",
80-
toJavaPoet(XTypeNames.PRODUCED),
70+
return XCodeBlock.of(
71+
"%T.successful(%L)",
72+
XTypeNames.PRODUCED,
8173
to(
82-
RequestKind.INSTANCE, from));
74+
RequestKind.INSTANCE,
75+
from));
8376

8477
default:
8578
throw new IllegalArgumentException(
@@ -88,30 +81,32 @@ public CodeBlock to(
8881
}
8982

9083
@Override
91-
public Expression to(
84+
public XExpression to(
9285
RequestKind requestKind,
93-
Expression from,
86+
XExpression from,
9487
XProcessingEnv processingEnv) {
95-
CodeBlock codeBlock = to(
96-
requestKind,
97-
from.codeBlock());
88+
XCodeBlock codeBlock =
89+
to(
90+
requestKind,
91+
from.codeBlock());
9892
switch (requestKind) {
9993
case INSTANCE:
100-
return Expression.create(from.type().unwrapType(), codeBlock);
94+
return XExpression.create(from.type().unwrapType(), codeBlock);
10195

10296
case PROVIDER:
10397
return from;
10498

10599
case PROVIDER_OF_LAZY:
106-
return Expression.create(
100+
return XExpression.create(
107101
from.type().rewrapType(XTypeNames.LAZY).wrapType(XTypeNames.DAGGER_PROVIDER),
108102
codeBlock);
109103

110104
case FUTURE:
111-
return Expression.create(from.type().rewrapType(XTypeNames.LISTENABLE_FUTURE), codeBlock);
105+
return XExpression.create(
106+
from.type().rewrapType(XTypeNames.LISTENABLE_FUTURE), codeBlock);
112107

113108
default:
114-
return Expression.create(
109+
return XExpression.create(
115110
from.type().rewrapType(RequestKinds.frameworkClassName(requestKind)), codeBlock);
116111
}
117112
}
@@ -120,12 +115,12 @@ public Expression to(
120115
/** A {@link dagger.producers.Producer}. */
121116
PRODUCER_NODE {
122117
@Override
123-
public CodeBlock to(
118+
public XCodeBlock to(
124119
RequestKind requestKind,
125-
CodeBlock from) {
120+
XCodeBlock from) {
126121
switch (requestKind) {
127122
case FUTURE:
128-
return CodeBlock.of("$L.get()", from);
123+
return XCodeBlock.of("%L.get()", from);
129124

130125
case PRODUCER:
131126
return from;
@@ -137,13 +132,13 @@ public CodeBlock to(
137132
}
138133

139134
@Override
140-
public Expression to(
135+
public XExpression to(
141136
RequestKind requestKind,
142-
Expression from,
137+
XExpression from,
143138
XProcessingEnv processingEnv) {
144139
switch (requestKind) {
145140
case FUTURE:
146-
return Expression.create(
141+
return XExpression.create(
147142
from.type().rewrapType(XTypeNames.LISTENABLE_FUTURE),
148143
to(
149144
requestKind,
@@ -214,21 +209,21 @@ public RequestKind requestKind() {
214209
}
215210

216211
/**
217-
* Returns a {@link CodeBlock} that evaluates to a requested object given an expression that
212+
* Returns a {@link XCodeBlock} that evaluates to a requested object given an expression that
218213
* evaluates to an instance of this framework type.
219214
*
220215
* @param requestKind the kind of {@link DependencyRequest} that the returned expression can
221216
* satisfy
222-
* @param from a {@link CodeBlock} that evaluates to an instance of this framework type
217+
* @param from a {@link XCodeBlock} that evaluates to an instance of this framework type
223218
* @throws IllegalArgumentException if a valid expression cannot be generated for {@code
224219
* requestKind}
225220
*/
226-
public abstract CodeBlock to(
221+
public abstract XCodeBlock to(
227222
RequestKind requestKind,
228-
CodeBlock from);
223+
XCodeBlock from);
229224

230225
/**
231-
* Returns an {@link Expression} that evaluates to a requested object given an expression that
226+
* Returns an {@link XExpression} that evaluates to a requested object given an expression that
232227
* evaluates to an instance of this framework type.
233228
*
234229
* @param requestKind the kind of {@link DependencyRequest} that the returned expression can
@@ -237,9 +232,9 @@ public abstract CodeBlock to(
237232
* @throws IllegalArgumentException if a valid expression cannot be generated for {@code
238233
* requestKind}
239234
*/
240-
public abstract Expression to(
235+
public abstract XExpression to(
241236
RequestKind requestKind,
242-
Expression from,
237+
XExpression from,
243238
XProcessingEnv processingEnv);
244239

245240
@Override

dagger-compiler/main/java/dagger/internal/codegen/binding/MapKeys.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,10 @@
4444
import androidx.room.compiler.processing.XTypeElement;
4545
import com.google.common.collect.ImmutableSet;
4646
import com.squareup.javapoet.MethodSpec;
47-
import dagger.MapKey;
4847
import dagger.internal.codegen.base.DaggerSuperficialValidation;
4948
import dagger.internal.codegen.base.MapKeyAccessibility;
5049
import dagger.internal.codegen.xprocessing.XElements;
5150
import dagger.internal.codegen.xprocessing.XTypeNames;
52-
import java.util.NoSuchElementException;
5351
import java.util.Optional;
5452

5553
/** Methods for extracting {@link MapKey} annotations and key code blocks from binding elements. */

dagger-compiler/main/java/dagger/internal/codegen/javapoet/BUILD

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,7 @@ java_library(
2525
plugins = ["//dagger-compiler/main/java/dagger/internal/codegen/bootstrap"],
2626
tags = ["maven:merged"],
2727
deps = [
28-
"//dagger-compiler/main/java/dagger/internal/codegen/langmodel",
2928
"//dagger-compiler/main/java/dagger/internal/codegen/xprocessing",
30-
"//third_party/java/auto:common",
3129
"//third_party/java/error_prone:annotations",
3230
"//third_party/java/guava/base",
3331
"//third_party/java/guava/collect",

dagger-compiler/main/java/dagger/internal/codegen/javapoet/CodeBlocks.java

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import static androidx.room.compiler.codegen.compat.XConverters.toJavaPoet;
2020
import static com.squareup.javapoet.MethodSpec.methodBuilder;
2121
import static com.squareup.javapoet.TypeSpec.anonymousClassBuilder;
22-
import static dagger.internal.codegen.xprocessing.XTypeNames.daggerProviderOf;
2322
import static dagger.internal.codegen.xprocessing.XTypeNames.lazyOf;
2423
import static java.util.stream.StreamSupport.stream;
2524
import static javax.lang.model.element.Modifier.PUBLIC;
@@ -72,34 +71,6 @@ public static CodeBlock concat(Iterable<CodeBlock> codeBlocks) {
7271
return stream(codeBlocks.spliterator(), false).collect(toConcatenatedCodeBlock());
7372
}
7473

75-
/**
76-
* Returns an anonymous {@link javax.inject.Provider} class with the single {@link
77-
* javax.inject.Provider#get()} method that returns the given {@code expression}.
78-
*/
79-
public static CodeBlock anonymousProvider(Expression expression) {
80-
return anonymousProvider(
81-
expression.type().asTypeName(), CodeBlock.of("return $L;", expression.codeBlock()));
82-
}
83-
84-
/**
85-
* Returns an anonymous {@link javax.inject.Provider} class with the single {@link
86-
* javax.inject.Provider#get()} method implemented by {@code body}.
87-
*/
88-
public static CodeBlock anonymousProvider(XTypeName providedType, CodeBlock body) {
89-
return CodeBlock.of(
90-
"$L",
91-
anonymousClassBuilder("")
92-
.superclass(toJavaPoet(daggerProviderOf(providedType)))
93-
.addMethod(
94-
methodBuilder("get")
95-
.addAnnotation(Override.class)
96-
.addModifiers(PUBLIC)
97-
.returns(toJavaPoet(providedType))
98-
.addCode(body)
99-
.build())
100-
.build());
101-
}
102-
10374
/**
10475
* Returns an anonymous {@link dagger.Lazy} class with the single {@link dagger.Lazy#get()} method
10576
* implemented by {@code body}.

dagger-compiler/main/java/dagger/internal/codegen/langmodel/Accessibility.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,10 @@
3535
import static dagger.internal.codegen.xprocessing.XTypes.isWildcard;
3636

3737
import androidx.room.compiler.codegen.XClassName;
38+
import androidx.room.compiler.codegen.XTypeName;
3839
import androidx.room.compiler.processing.XElement;
3940
import androidx.room.compiler.processing.XProcessingEnv;
4041
import androidx.room.compiler.processing.XType;
41-
import com.squareup.javapoet.TypeName;
4242
import java.util.Optional;
4343

4444
/**
@@ -156,14 +156,14 @@ public static boolean isRawTypePubliclyAccessible(XType type) {
156156
* <li>Otherwise returns {@link Object}.
157157
* </ul>
158158
*/
159-
public static TypeName accessibleTypeName(
159+
public static XTypeName accessibleTypeName(
160160
XType type, XClassName requestingClass, XProcessingEnv processingEnv) {
161161
if (isTypeAccessibleFrom(type, requestingClass.getPackageName())) {
162-
return type.getTypeName();
162+
return type.asTypeName();
163163
} else if (isDeclared(type) && isRawTypeAccessible(type, requestingClass.getPackageName())) {
164-
return type.getRawType().getTypeName();
164+
return type.getRawType().asTypeName();
165165
} else {
166-
return TypeName.OBJECT;
166+
return XTypeName.ANY_OBJECT;
167167
}
168168
}
169169

dagger-compiler/main/java/dagger/internal/codegen/langmodel/BUILD

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,5 @@ java_library(
2424
srcs = glob(["*.java"]),
2525
plugins = ["//dagger-compiler/main/java/dagger/internal/codegen/bootstrap"],
2626
tags = ["maven:merged"],
27-
deps = [
28-
"//dagger-compiler/main/java/dagger/internal/codegen/base:shared",
29-
"//dagger-compiler/main/java/dagger/internal/codegen/xprocessing",
30-
"//dagger-runtime/main/java/dagger:core",
31-
"//dagger-spi",
32-
"//third_party/java/auto:common",
33-
"//third_party/java/guava/base",
34-
"//third_party/java/guava/collect",
35-
"//third_party/java/guava/graph",
36-
"//third_party/java/guava/util/concurrent",
37-
"//third_party/java/javapoet",
38-
],
27+
deps = ["//dagger-compiler/main/java/dagger/internal/codegen/xprocessing"],
3928
)

dagger-compiler/main/java/dagger/internal/codegen/processingstep/AssistedFactoryProcessingStep.java

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import static javax.lang.model.element.Modifier.STATIC;
4141

4242
import androidx.room.compiler.codegen.XClassName;
43+
import androidx.room.compiler.codegen.XCodeBlock;
4344
import androidx.room.compiler.codegen.XTypeName;
4445
import androidx.room.compiler.processing.XElement;
4546
import androidx.room.compiler.processing.XExecutableParameterElement;
@@ -333,11 +334,12 @@ public ImmutableList<TypeSpec.Builder> topLevelTypes(AssistedFactoryBinding bind
333334
"return $T.$Lcreate(new $T($N))",
334335
toJavaPoet(XTypeNames.INSTANCE_FACTORY),
335336
// Java 7 type inference requires the method call provide the exact type here.
336-
isPreJava8SourceVersion(processingEnv)
337-
? CodeBlock.of(
338-
"<$T>",
339-
accessibleTypeName(metadata.factoryType(), name, processingEnv))
340-
: CodeBlock.of(""),
337+
toJavaPoet(
338+
isPreJava8SourceVersion(processingEnv)
339+
? XCodeBlock.of(
340+
"<%T>",
341+
accessibleTypeName(metadata.factoryType(), name, processingEnv))
342+
: XCodeBlock.of("")),
341343
toJavaPoet(name),
342344
delegateFactoryParam)
343345
.build())
@@ -357,11 +359,12 @@ public ImmutableList<TypeSpec.Builder> topLevelTypes(AssistedFactoryBinding bind
357359
"return $T.$Lcreate(new $T($N))",
358360
toJavaPoet(XTypeNames.INSTANCE_FACTORY),
359361
// Java 7 type inference requires the method call provide the exact type here.
360-
isPreJava8SourceVersion(processingEnv)
361-
? CodeBlock.of(
362-
"<$T>",
363-
accessibleTypeName(metadata.factoryType(), name, processingEnv))
364-
: CodeBlock.of(""),
362+
toJavaPoet(
363+
isPreJava8SourceVersion(processingEnv)
364+
? XCodeBlock.of(
365+
"<%T>",
366+
accessibleTypeName(metadata.factoryType(), name, processingEnv))
367+
: XCodeBlock.of("")),
365368
toJavaPoet(name),
366369
delegateFactoryParam)
367370
.build());

0 commit comments

Comments
 (0)