|
| 1 | +package com.fasterxml.classmate.members; |
| 2 | + |
| 3 | +import java.util.List; |
| 4 | + |
| 5 | +import junit.framework.TestCase; |
| 6 | + |
| 7 | +import com.fasterxml.classmate.*; |
| 8 | + |
| 9 | +// for issue "ghost" type parameter in field: |
| 10 | +public class GhostTypeParameterInFieldTest |
| 11 | + extends TestCase |
| 12 | +{ |
| 13 | + public static class A<T extends Number> { |
| 14 | + public List<T> listOfT; |
| 15 | + public T t; |
| 16 | + public Integer i; |
| 17 | + } |
| 18 | + |
| 19 | + public void testGhostTypeParameterInField() |
| 20 | + { |
| 21 | + TypeResolver resolver = new TypeResolver(); |
| 22 | + ResolvedType resolvedType = resolver.resolve(A.class, Integer.class); |
| 23 | + MemberResolver memberResolver = new MemberResolver(resolver); |
| 24 | + ResolvedTypeWithMembers resolvedTypeWithMembers = memberResolver.resolve(resolvedType, null, null); |
| 25 | + ResolvedField[] fields = resolvedTypeWithMembers.getMemberFields(); |
| 26 | + |
| 27 | + // test fields |
| 28 | + assertEquals(3, fields.length); |
| 29 | + |
| 30 | + // field List<T> listOfT |
| 31 | + ResolvedField listOfT_Field = fields[0]; |
| 32 | + assertEquals("listOfT", listOfT_Field.getName()); |
| 33 | + ResolvedType listOfT_Type = listOfT_Field.getType(); |
| 34 | + assertEquals(List.class, listOfT_Type.getErasedType()); |
| 35 | + 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()); |
| 37 | + assertEquals(Integer.class, listOfT_TypeParams.get(0).getErasedType()); |
| 38 | + |
| 39 | + // field t |
| 40 | + ResolvedField t_Field = fields[1]; |
| 41 | + assertEquals("t", t_Field.getName()); |
| 42 | + ResolvedType t_Type = t_Field.getType(); |
| 43 | + assertEquals(Integer.class, t_Type.getErasedType()); |
| 44 | + 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()); |
| 46 | + |
| 47 | + // field i |
| 48 | + ResolvedField i_Field = fields[2]; |
| 49 | + assertEquals("i", i_Field.getName()); |
| 50 | + ResolvedType i_Type = i_Field.getType(); |
| 51 | + assertEquals(Integer.class, i_Type.getErasedType()); |
| 52 | + 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()); |
| 54 | + } |
| 55 | + |
| 56 | +} |
0 commit comments