@@ -77,10 +77,16 @@ SCENARIO(
7777 field.type (), symbol_typet (" java::Generic" ));
7878 THEN (" The pointer should be generic" )
7979 {
80+ const java_generic_typet &generic_field =
81+ require_type::require_java_generic_type (
82+ field.type (),
83+ {{require_type::type_argument_kindt::Inst, " java::Generic" }});
84+
85+ const typet &type_argument_1 =
86+ generic_field.generic_type_arguments ().at (0 );
8087 require_type::require_java_generic_type (
81- field.type (),
82- {{require_type::type_argument_kindt::Inst, " java::Generic" }});
83- // TODO extend when nested generics are parsed correctly - TG-1301
88+ type_argument_1,
89+ {{require_type::type_argument_kindt::Var, class_prefix + " ::T" }});
8490 }
8591 }
8692
@@ -92,10 +98,24 @@ SCENARIO(
9298 field.type (), symbol_typet (" java::Generic" ));
9399 THEN (" The pointer should be generic" )
94100 {
101+ const java_generic_typet &generic_field =
102+ require_type::require_java_generic_type (
103+ field.type (),
104+ {{require_type::type_argument_kindt::Inst, " java::Generic" }});
105+
106+ const typet &type_argument_1 =
107+ generic_field.generic_type_arguments ().at (0 );
108+ const java_generic_typet &generic_type_argument_1 =
109+ require_type::require_java_generic_type (
110+ type_argument_1,
111+ {{require_type::type_argument_kindt::Inst, " java::Generic" }});
112+
113+ const typet &type_argument_1_1 =
114+ generic_type_argument_1.generic_type_arguments ().at (0 );
95115 require_type::require_java_generic_type (
96- field. type () ,
97- {{require_type::type_argument_kindt::Inst, " java::Generic " }});
98- // TODO extend when nested generics are parsed correctly - TG-1301
116+ type_argument_1_1 ,
117+ {{require_type::type_argument_kindt::Inst,
118+ " java::java.lang.Integer " }});
99119 }
100120 }
101121
@@ -188,13 +208,29 @@ SCENARIO(
188208 field.type (), symbol_typet (" java::GenericTwoParam" ));
189209 THEN (" The pointer should be generic" )
190210 {
211+ const java_generic_typet &generic_field =
212+ require_type::require_java_generic_type (
213+ field.type (),
214+ {{require_type::type_argument_kindt::Inst,
215+ " java::Generic" },
216+ {require_type::type_argument_kindt::Inst,
217+ " java::GenericTwoParam" }});
218+
219+ const typet &type_argument_1 =
220+ generic_field.generic_type_arguments ().at (0 );
191221 require_type::require_java_generic_type (
192- field.type (),
193- {{require_type::type_argument_kindt::Inst,
194- " java::Generic" },
222+ type_argument_1,
223+ {{require_type::type_argument_kindt::Var,
224+ class_prefix + " ::T" }});
225+
226+ const typet &type_argument_2 =
227+ generic_field.generic_type_arguments ().at (1 );
228+ require_type::require_java_generic_type (
229+ type_argument_2,
230+ {{require_type::type_argument_kindt::Var,
231+ class_prefix + " ::S" },
195232 {require_type::type_argument_kindt::Inst,
196- " java::GenericTwoParam" }});
197- // TODO extend when nested generics are parsed correctly - TG-1301
233+ " java::java.lang.Integer" }});
198234 }
199235 }
200236 }
0 commit comments