提交 56368d03 编写于 作者: S Sam Judd

Avoid varargs warnings using @SafeVarags in generated code.

The annotation can only be added to final methods, so we have to use
@SuppessWarnings for RequestOptions instead. As a result callers of
transforms() will have to suppress the warning on their end as well.

Fixes #2383.
上级 a0c5af1a
......@@ -287,7 +287,18 @@ final class RequestBuilderGenerator {
return MethodSpec.methodBuilder(requestOptionMethod.name)
.addJavadoc(
processorUtil.generateSeeMethodJavadoc(requestOptionsClassName, requestOptionMethod))
.addModifiers(Modifier.PUBLIC)
.addModifiers(Modifier.PUBLIC, Modifier.FINAL)
.varargs(requestOptionMethod.varargs)
.addAnnotations(
FluentIterable.from(requestOptionMethod.annotations)
.filter(new Predicate<AnnotationSpec>() {
@Override
public boolean apply(AnnotationSpec input) {
return !input.type.equals(TypeName.get(Override.class));
}
})
.toList()
)
.addTypeVariables(requestOptionMethod.typeVariables)
.addParameters(requestOptionMethod.parameters)
.returns(generatedRequestBuilderOfTranscodeType)
......
......@@ -190,8 +190,9 @@ final class RequestOptionsGenerator {
}
private MethodSpec generateRequestOptionOverride(ExecutableElement methodToOverride) {
return MethodSpec.overriding(methodToOverride)
MethodSpec.Builder result = MethodSpec.overriding(methodToOverride)
.returns(glideOptionsName)
.addModifiers(Modifier.FINAL)
.addCode(CodeBlock.builder()
.add("return ($T) super.$N(", glideOptionsName, methodToOverride.getSimpleName())
.add(FluentIterable.from(methodToOverride.getParameters())
......@@ -203,8 +204,15 @@ final class RequestOptionsGenerator {
})
.join(Joiner.on(", ")))
.add(");\n")
.build())
.build();
.build());
if (methodToOverride.getSimpleName().toString().equals("transforms")) {
result.addAnnotation(
AnnotationSpec.builder(SafeVarargs.class)
.build());
}
return result.build();
}
private List<MethodAndStaticVar> generateMethodsForRequestOptionsExtension(
......
......@@ -1005,7 +1005,7 @@ public class RequestOptions implements Cloneable {
* @see #optionalTransform(Transformation)
* @see #optionalTransform(Class, Transformation)
*/
@SuppressWarnings("unchecked")
@SuppressWarnings({"unchecked", "varargs"})
public RequestOptions transforms(@NonNull Transformation<Bitmap>... transformations) {
if (isAutoCloneEnabled) {
return clone().transforms(transformations);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册