Skip to content

Commit 2f358bf

Browse files
bcorsoDagger Team
authored andcommitted
Internal changes
RELNOTES=N/A PiperOrigin-RevId: 956018823
1 parent 1259481 commit 2f358bf

10 files changed

Lines changed: 52 additions & 8 deletions

File tree

dagger-android-processor/main/java/dagger/android/processor/DelegateAndroidProcessor.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
final class DelegateAndroidProcessor {
2929
static final XProcessingEnvConfig PROCESSING_ENV_CONFIG =
3030
new XProcessingEnvConfig.Builder()
31+
// TODO: b/526607713 - Remove this once we properly handle property annotations in KSP.
32+
.includePropertyAnnotationsInFields(true)
3133
.build();
3234
static final String FLAG_EXPERIMENTAL_USE_STRING_KEYS =
3335
"dagger.android.experimentalUseStringKeys";

dagger-android-processor/main/java/dagger/android/processor/DuplicateAndroidInjectorsChecker.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import static javax.tools.Diagnostic.Kind.ERROR;
2626

2727
import androidx.room3.compiler.processing.XAnnotation;
28+
import androidx.room3.compiler.processing.XProcessingEnv;
2829
import androidx.room3.compiler.processing.XType;
2930
import androidx.room3.compiler.processing.XTypeArgument;
3031
import com.google.auto.service.AutoService;
@@ -56,11 +57,19 @@
5657
*/
5758
@AutoService(BindingGraphPlugin.class)
5859
public final class DuplicateAndroidInjectorsChecker implements BindingGraphPlugin {
59-
private DaggerProcessingEnv processingEnv;
60+
private DaggerProcessingEnv daggerProcessingEnv;
61+
private XProcessingEnv processingEnv;
6062

6163
@Override
62-
public void init(DaggerProcessingEnv processingEnv, Map<String, String> options) {
63-
this.processingEnv = processingEnv;
64+
public void init(DaggerProcessingEnv daggerProcessingEnv, Map<String, String> options) {
65+
this.daggerProcessingEnv = daggerProcessingEnv;
66+
}
67+
68+
@Override
69+
public void onProcessingRoundBegin() {
70+
// The XProcessingEnv must be reconstructed each round to ensure it uses the Resolver from the
71+
// current round.
72+
this.processingEnv = DaggerElements.toXProcessing(daggerProcessingEnv);
6473
}
6574

6675
@Override

dagger-android-proguard-processor/main/java/dagger/android/internal/proguard/KspProguardProcessor.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@
4242
public final class KspProguardProcessor extends KspBasicAnnotationProcessor {
4343
private static final XProcessingEnvConfig PROCESSING_ENV_CONFIG =
4444
new XProcessingEnvConfig.Builder()
45+
// TODO: b/526607713 - Remove this once we properly handle property annotations in KSP.
46+
.includePropertyAnnotationsInFields(true)
4547
.build();
4648
private XProcessingEnv env;
4749

dagger-compiler/main/java/dagger/internal/codegen/DelegateComponentProcessor.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@
7171
final class DelegateComponentProcessor {
7272
static final XProcessingEnvConfig PROCESSING_ENV_CONFIG =
7373
new XProcessingEnvConfig.Builder()
74+
// TODO: b/526607713 - Remove this once we properly handle property annotations in KSP.
75+
.includePropertyAnnotationsInFields(true)
7476
.disableAnnotatedElementValidation(true)
7577
.build();
7678

dagger-compiler/main/java/dagger/internal/codegen/xprocessing/DaggerElements.java

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import androidx.room3.compiler.processing.XElement;
2020
import androidx.room3.compiler.processing.XProcessingEnv;
2121
import androidx.room3.compiler.processing.XType;
22+
import androidx.room3.compiler.processing.XTypeElement;
2223
import androidx.room3.compiler.processing.compat.XConverters;
2324
import com.google.devtools.ksp.symbol.KSClassDeclaration;
2425
import com.google.devtools.ksp.symbol.KSFunctionDeclaration;
@@ -27,12 +28,11 @@
2728
import dagger.spi.model.DaggerElement;
2829
import dagger.spi.model.DaggerProcessingEnv;
2930
import dagger.spi.model.DaggerType;
31+
import dagger.spi.model.DaggerTypeElement;
3032

3133
/** Convert Dagger model types to XProcessing types. */
3234
public final class DaggerElements {
33-
public static XElement toXProcessing(
34-
DaggerElement element, DaggerProcessingEnv daggerProcessingEnv) {
35-
XProcessingEnv processingEnv = toXProcessing(daggerProcessingEnv);
35+
public static XElement toXProcessing(DaggerElement element, XProcessingEnv processingEnv) {
3636
switch (element.backend()) {
3737
case JAVAC:
3838
return XConverters.toXProcessing(element.javac(), processingEnv);
@@ -53,8 +53,7 @@ public static XElement toXProcessing(
5353
String.format("Backend %s not supported yet.", element.backend()));
5454
}
5555

56-
public static XType toXProcessing(DaggerType type, DaggerProcessingEnv daggerProcessingEnv) {
57-
XProcessingEnv processingEnv = toXProcessing(daggerProcessingEnv);
56+
public static XType toXProcessing(DaggerType type, XProcessingEnv processingEnv) {
5857
switch (type.backend()) {
5958
case JAVAC:
6059
return XConverters.toXProcessing(type.javac(), processingEnv);
@@ -64,6 +63,25 @@ public static XType toXProcessing(DaggerType type, DaggerProcessingEnv daggerPro
6463
throw new IllegalStateException(String.format("Backend %s not supported yet.", type.backend()));
6564
}
6665

66+
public static XTypeElement toXProcessing(
67+
DaggerTypeElement element, XProcessingEnv processingEnv) {
68+
switch (element.backend()) {
69+
case JAVAC:
70+
return XConverters.toXProcessing(element.javac(), processingEnv);
71+
case KSP:
72+
return XConverters.toXProcessing(element.ksp(), processingEnv);
73+
}
74+
throw new IllegalStateException(
75+
String.format("Backend %s not supported yet.", element.backend()));
76+
}
77+
78+
/**
79+
* Returns a new {@link XProcessingEnv} for the given {@link DaggerProcessingEnv}.
80+
*
81+
* <p>Callers should invoke this method once per processing round and pass the resulting {@link
82+
* XProcessingEnv} to the other {@code toXProcessing} methods so that element and type wrappers
83+
* are cached across conversions within the round.
84+
*/
6785
public static XProcessingEnv toXProcessing(DaggerProcessingEnv processingEnv) {
6886
switch (processingEnv.backend()) {
6987
case JAVAC:

dagger-compiler/main/java/dagger/internal/codegen/xprocessing/XElements.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import static androidx.room3.compiler.processing.XElementKt.isField;
2121
import static androidx.room3.compiler.processing.XElementKt.isMethod;
2222
import static androidx.room3.compiler.processing.XElementKt.isMethodParameter;
23+
import static androidx.room3.compiler.processing.XElementKt.isProperty;
2324
import static androidx.room3.compiler.processing.XElementKt.isTypeElement;
2425
import static androidx.room3.compiler.processing.XElementKt.isVariableElement;
2526
import static androidx.room3.compiler.processing.compat.XConverters.getProcessingEnv;
@@ -45,6 +46,7 @@
4546
import androidx.room3.compiler.processing.XMemberContainer;
4647
import androidx.room3.compiler.processing.XMethodElement;
4748
import androidx.room3.compiler.processing.XProcessingEnv;
49+
import androidx.room3.compiler.processing.XPropertyElement;
4850
import androidx.room3.compiler.processing.XTypeElement;
4951
import androidx.room3.compiler.processing.XTypeParameterElement;
5052
import androidx.room3.compiler.processing.XVariableElement;
@@ -254,6 +256,11 @@ public static XFieldElement asField(XElement element) {
254256
return (XFieldElement) element;
255257
}
256258

259+
public static XPropertyElement asProperty(XElement element) {
260+
checkState(isProperty(element));
261+
return (XPropertyElement) element;
262+
}
263+
257264
public static XEnumEntry asEnumEntry(XElement element) {
258265
return (XEnumEntry) element;
259266
}
Binary file not shown.
Binary file not shown.

hilt-compiler/main/java/dagger/hilt/processor/internal/HiltProcessingEnvConfigs.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
public final class HiltProcessingEnvConfigs {
2323
public static final XProcessingEnvConfig CONFIGS =
2424
new XProcessingEnvConfig.Builder()
25+
// TODO: b/526607713 - Remove this once we properly handle property annotations in KSP.
26+
.includePropertyAnnotationsInFields(true)
2527
// In Hilt we disable the default element validation because we would otherwise run into a
2628
// cycle where our Hilt processors are waiting on the "Hilt_Foo" classes to be generated
2729
// before processing "Foo", but "Hilt_Foo" can't be generated until "Foo" is processed.

java/dagger/testing/compile/CompilerTests.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ public final class CompilerTests {
6464
// dagger-compiler/main/java/dagger/internal/codegen/DelegateComponentProcessor.java
6565
static final XProcessingEnvConfig PROCESSING_ENV_CONFIG =
6666
new XProcessingEnvConfig.Builder()
67+
// TODO: b/526607713 - Remove this once we properly handle property annotations in KSP.
68+
.includePropertyAnnotationsInFields(true)
6769
.disableAnnotatedElementValidation(true)
6870
.build();
6971

0 commit comments

Comments
 (0)