From 6b40012859b62e284aa7cb48284569ee2cb11964 Mon Sep 17 00:00:00 2001 From: zhengxiaoyao0716 <1499383852@qq.com> Date: Sun, 9 Oct 2022 16:22:06 +0800 Subject: [PATCH] fix issue#933, ParameterizedTypeName#annotated would add the annotations repeatedly. --- .../java/com/squareup/javapoet/ParameterizedTypeName.java | 2 +- .../java/com/squareup/javapoet/AnnotatedTypeNameTest.java | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/squareup/javapoet/ParameterizedTypeName.java b/src/main/java/com/squareup/javapoet/ParameterizedTypeName.java index 3a8bf62eb..de33f8c3e 100644 --- a/src/main/java/com/squareup/javapoet/ParameterizedTypeName.java +++ b/src/main/java/com/squareup/javapoet/ParameterizedTypeName.java @@ -55,7 +55,7 @@ private ParameterizedTypeName(ParameterizedTypeName enclosingType, ClassName raw @Override public ParameterizedTypeName annotated(List annotations) { return new ParameterizedTypeName( - enclosingType, rawType, typeArguments, concatAnnotations(annotations)); + enclosingType, rawType.withoutAnnotations(), typeArguments, concatAnnotations(annotations)); } @Override diff --git a/src/test/java/com/squareup/javapoet/AnnotatedTypeNameTest.java b/src/test/java/com/squareup/javapoet/AnnotatedTypeNameTest.java index 42734ff0c..9974695f1 100644 --- a/src/test/java/com/squareup/javapoet/AnnotatedTypeNameTest.java +++ b/src/test/java/com/squareup/javapoet/AnnotatedTypeNameTest.java @@ -81,6 +81,12 @@ public class AnnotatedTypeNameTest { assertThat(actual.toString()).isEqualTo("java.util. @" + TUA + " List"); } + @Test public void annotatedParameterizedTypeAgain() { + TypeName type = ParameterizedTypeName.get(List.class, String.class); + TypeName actual = type.annotated(TYPE_USE_ANNOTATION).annotated(); // see issues/933 + assertThat(actual.toString()).isEqualTo("java.util. @" + TUA + " List"); + } + @Test public void annotatedArgumentOfParameterizedType() { TypeName type = TypeName.get(String.class).annotated(TYPE_USE_ANNOTATION); TypeName actual = ParameterizedTypeName.get(ClassName.get(List.class), type);