Skip to content

Commit 922ff50

Browse files
wanyingd1996Dagger Team
authored andcommitted
reduce number of times resolving parameter types in an extreme case.
RELNOTES=n/a PiperOrigin-RevId: 612562471
1 parent 1bbd7db commit 922ff50

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

java/dagger/internal/codegen/xprocessing/XElements.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -329,16 +329,22 @@ public static String toStableString(XElement element) {
329329
return asTypeElement(element).getQualifiedName();
330330
} else if (isExecutable(element)) {
331331
XExecutableElement executable = asExecutable(element);
332+
// TODO(b/318709946) resolving ksp types can be expensive, therefore we should avoid it
333+
// here for extreme cases until ksp improved the performance.
334+
boolean tooManyParameters =
335+
getProcessingEnv(element).getBackend().equals(XProcessingEnv.Backend.KSP)
336+
&& executable.getParameters().size() > 10;
332337
return String.format(
333338
"%s(%s)",
334339
getSimpleName(
335-
isConstructor(element)
336-
? asConstructor(element).getEnclosingElement()
337-
: executable),
338-
executable.getParameters().stream()
339-
.map(XExecutableParameterElement::getType)
340-
.map(XTypes::toStableString)
341-
.collect(joining(",")));
340+
isConstructor(element) ? asConstructor(element).getEnclosingElement() : executable),
341+
(tooManyParameters
342+
? executable.getParameters().stream().limit(10)
343+
: executable.getParameters().stream()
344+
.map(XExecutableParameterElement::getType)
345+
.map(XTypes::toStableString)
346+
.collect(joining(",")))
347+
+ (tooManyParameters ? ", ..." : ""));
342348
} else if (isEnumEntry(element)
343349
|| isField(element)
344350
|| isMethodParameter(element)

0 commit comments

Comments
 (0)