diff --git a/java/dagger/internal/codegen/writing/ComponentRequestRepresentations.java b/java/dagger/internal/codegen/writing/ComponentRequestRepresentations.java index 17979b5ea24..9a9aed17263 100644 --- a/java/dagger/internal/codegen/writing/ComponentRequestRepresentations.java +++ b/java/dagger/internal/codegen/writing/ComponentRequestRepresentations.java @@ -243,7 +243,10 @@ private Expression getComponentMethodExpression( // Cast if the expression type does not match the component method's return type. This is useful // for types that have protected accessibility to the component but are not accessible to other // classes, e.g. shards, that may need to handle the implementation of the binding. - XType returnType = componentMethod.methodElement().getReturnType(); + XType returnType = + componentMethod.methodElement() + .asMemberOf(componentImplementation.graph().componentTypeElement().getType()) + .getReturnType(); return !isVoid(returnType) && !isAssignableTo(expression.type(), returnType) ? expression.castTo(returnType) : expression; diff --git a/java/dagger/internal/codegen/xprocessing/xprocessing-testing.jar b/java/dagger/internal/codegen/xprocessing/xprocessing-testing.jar index 9345d30d97c..3515899f928 100644 Binary files a/java/dagger/internal/codegen/xprocessing/xprocessing-testing.jar and b/java/dagger/internal/codegen/xprocessing/xprocessing-testing.jar differ diff --git a/java/dagger/internal/codegen/xprocessing/xprocessing.jar b/java/dagger/internal/codegen/xprocessing/xprocessing.jar index 6d7f7bc9e20..95099031009 100644 Binary files a/java/dagger/internal/codegen/xprocessing/xprocessing.jar and b/java/dagger/internal/codegen/xprocessing/xprocessing.jar differ