6
6
7
7
import com .fasterxml .classmate .*;
8
8
9
- // for issue "ghost" type parameter in field:
9
+ // for [#33]: "ghost" parameter
10
10
public class GhostTypeParameterInFieldTest
11
11
extends TestCase
12
12
{
13
- public static class A <T extends Number > {
13
+ public static class GenericWithClass <T extends Number > {
14
14
public List <T > listOfT ;
15
15
public T t ;
16
16
public Integer i ;
17
17
}
18
18
19
- public void testGhostTypeParameterInField ()
19
+ public static class GenericWithInterface <T extends Number > {
20
+ public List <T > listOfT ;
21
+ public T t ;
22
+ public Number i ;
23
+ }
24
+
25
+ public void testGhostTypeParameterWithClass ()
20
26
{
21
27
TypeResolver resolver = new TypeResolver ();
22
- ResolvedType resolvedType = resolver .resolve (A .class , Integer .class );
28
+ ResolvedType resolvedType = resolver .resolve (GenericWithClass .class , Integer .class );
23
29
MemberResolver memberResolver = new MemberResolver (resolver );
24
30
ResolvedTypeWithMembers resolvedTypeWithMembers = memberResolver .resolve (resolvedType , null , null );
25
31
ResolvedField [] fields = resolvedTypeWithMembers .getMemberFields ();
@@ -33,7 +39,7 @@ public void testGhostTypeParameterInField()
33
39
ResolvedType listOfT_Type = listOfT_Field .getType ();
34
40
assertEquals (List .class , listOfT_Type .getErasedType ());
35
41
List <ResolvedType > listOfT_TypeParams = listOfT_Type .getTypeParameters ();
36
- assertEquals ("Expected 1 type paramter for listOfT, got " + listOfT_TypeParams .size () + ": " + listOfT_TypeParams , 1 , listOfT_TypeParams .size ());
42
+ assertEquals ("Expected 1 type parameter for listOfT, got " + listOfT_TypeParams .size () + ": " + listOfT_TypeParams , 1 , listOfT_TypeParams .size ());
37
43
assertEquals (Integer .class , listOfT_TypeParams .get (0 ).getErasedType ());
38
44
39
45
// field t
@@ -42,15 +48,51 @@ public void testGhostTypeParameterInField()
42
48
ResolvedType t_Type = t_Field .getType ();
43
49
assertEquals (Integer .class , t_Type .getErasedType ());
44
50
List <ResolvedType > t_TypeParams = t_Type .getTypeParameters ();
45
- assertEquals ("Expected 0 type paramter for t, got " + t_TypeParams .size () + ": " + t_TypeParams , 0 , t_TypeParams .size ());
51
+ assertEquals ("Expected 0 type parameter for t, got " + t_TypeParams .size () + ": " + t_TypeParams , 0 , t_TypeParams .size ());
46
52
47
53
// field i
48
54
ResolvedField i_Field = fields [2 ];
49
55
assertEquals ("i" , i_Field .getName ());
50
56
ResolvedType i_Type = i_Field .getType ();
51
57
assertEquals (Integer .class , i_Type .getErasedType ());
52
58
List <ResolvedType > i_TypeParams = i_Type .getTypeParameters ();
53
- assertEquals ("Expected 0 type paramter for i, got " + i_TypeParams .size () + ": " + i_TypeParams , 0 , i_TypeParams .size ());
59
+ assertEquals ("Expected 0 type parameter for i, got " + i_TypeParams .size () + ": " + i_TypeParams , 0 , i_TypeParams .size ());
54
60
}
55
61
62
+ public void testGhostTypeParameterWithInterface ()
63
+ {
64
+ TypeResolver resolver = new TypeResolver ();
65
+ ResolvedType resolvedType = resolver .resolve (GenericWithInterface .class , Integer .class );
66
+ MemberResolver memberResolver = new MemberResolver (resolver );
67
+ ResolvedTypeWithMembers resolvedTypeWithMembers = memberResolver .resolve (resolvedType , null , null );
68
+ ResolvedField [] fields = resolvedTypeWithMembers .getMemberFields ();
69
+
70
+ // test fields
71
+ assertEquals (3 , fields .length );
72
+
73
+ // field List<T> listOfT
74
+ ResolvedField listOfT_Field = fields [0 ];
75
+ assertEquals ("listOfT" , listOfT_Field .getName ());
76
+ ResolvedType listOfT_Type = listOfT_Field .getType ();
77
+ assertEquals (List .class , listOfT_Type .getErasedType ());
78
+ List <ResolvedType > listOfT_TypeParams = listOfT_Type .getTypeParameters ();
79
+ assertEquals ("Expected 1 type parameter for listOfT, got " + listOfT_TypeParams .size () + ": " + listOfT_TypeParams , 1 , listOfT_TypeParams .size ());
80
+ assertEquals (Integer .class , listOfT_TypeParams .get (0 ).getErasedType ());
81
+
82
+ // field t
83
+ ResolvedField t_Field = fields [1 ];
84
+ assertEquals ("t" , t_Field .getName ());
85
+ ResolvedType t_Type = t_Field .getType ();
86
+ assertEquals (Integer .class , t_Type .getErasedType ());
87
+ List <ResolvedType > t_TypeParams = t_Type .getTypeParameters ();
88
+ assertEquals ("Expected 0 type parameter for t, got " + t_TypeParams .size () + ": " + t_TypeParams , 0 , t_TypeParams .size ());
89
+
90
+ // field i
91
+ ResolvedField i_Field = fields [2 ];
92
+ assertEquals ("i" , i_Field .getName ());
93
+ ResolvedType i_Type = i_Field .getType ();
94
+ assertEquals (Number .class , i_Type .getErasedType ());
95
+ List <ResolvedType > i_TypeParams = i_Type .getTypeParameters ();
96
+ assertEquals ("Expected 0 type parameter for i, got " + i_TypeParams .size () + ": " + i_TypeParams , 0 , i_TypeParams .size ());
97
+ }
56
98
}
0 commit comments