@@ -18,7 +18,8 @@ SCENARIO(
18
18
" GenericClassWithInnerClasses" ,
19
19
" ./java_bytecode/java_bytecode_parse_generics" );
20
20
21
- std::string outer_class_prefix = " java::GenericClassWithInnerClasses" ;
21
+ std::string outer_class_name = " GenericClassWithInnerClasses" ;
22
+ std::string outer_class_prefix = " java::" + outer_class_name;
22
23
23
24
WHEN (" Generic outer class has fields which are objects of the inner classes" )
24
25
{
@@ -69,15 +70,16 @@ SCENARIO(
69
70
{
70
71
const java_implicitly_generic_class_typet &java_class =
71
72
require_type::require_complete_java_implicitly_generic_class (
72
- class_symbol.type , {outer_class_prefix + " ::T" });
73
+ class_symbol.type ,
74
+ {inner_class_prefix + " ::" + outer_class_name + " ::T" });
73
75
74
76
THEN (
75
77
" There is a field t1 which is the generic parameter of the outer "
76
78
" class" )
77
79
{
78
80
const auto &field = require_type::require_component (java_class, " t1" );
79
81
require_type::require_java_generic_parameter (
80
- field.type (), outer_class_prefix + " ::T" );
82
+ field.type (), inner_class_prefix + " :: " + outer_class_name + " ::T" );
81
83
}
82
84
THEN (
83
85
" There is a field t2 of generic type with the generic "
@@ -88,7 +90,7 @@ SCENARIO(
88
90
require_type::require_java_generic_type (
89
91
field.type (),
90
92
{{require_type::type_argument_kindt::Var,
91
- outer_class_prefix + " ::T" }});
93
+ inner_class_prefix + " :: " + outer_class_name + " ::T" }});
92
94
}
93
95
}
94
96
}
@@ -105,15 +107,17 @@ SCENARIO(
105
107
{
106
108
const java_implicitly_generic_class_typet &java_class =
107
109
require_type::require_complete_java_implicitly_generic_class (
108
- class_symbol.type , {outer_class_prefix + " ::T" });
110
+ class_symbol.type ,
111
+ {inner_inner_class_prefix + " ::" + outer_class_name + " ::T" });
109
112
110
113
THEN (
111
114
" There is a field tt1 which is the generic parameter of the outer "
112
115
" class" )
113
116
{
114
117
const auto &field = require_type::require_component (java_class, " tt1" );
115
118
require_type::require_java_generic_parameter (
116
- field.type (), outer_class_prefix + " ::T" );
119
+ field.type (),
120
+ inner_inner_class_prefix + " ::" + outer_class_name + " ::T" );
117
121
}
118
122
THEN (
119
123
" There is a field tt2 of nested generic type with the generic "
@@ -132,7 +136,7 @@ SCENARIO(
132
136
require_type::require_java_generic_type (
133
137
type_argument,
134
138
{{require_type::type_argument_kindt::Var,
135
- outer_class_prefix + " ::T" }});
139
+ inner_inner_class_prefix + " :: " + outer_class_name + " ::T" }});
136
140
}
137
141
}
138
142
}
@@ -148,7 +152,8 @@ SCENARIO(
148
152
THEN (" It has correct generic types and implicit generic types" )
149
153
{
150
154
require_type::require_complete_java_implicitly_generic_class (
151
- class_symbol.type , {outer_class_prefix + " ::T" });
155
+ class_symbol.type ,
156
+ {generic_inner_class_prefix + " ::" + outer_class_name + " ::T" });
152
157
const java_generic_class_typet &generic_class =
153
158
require_type::require_complete_java_generic_class (
154
159
class_symbol.type , {generic_inner_class_prefix + " ::U" });
@@ -160,7 +165,8 @@ SCENARIO(
160
165
const auto &field =
161
166
require_type::require_component (generic_class, " gt1" );
162
167
require_type::require_java_generic_parameter (
163
- field.type (), outer_class_prefix + " ::T" );
168
+ field.type (),
169
+ generic_inner_class_prefix + " ::" + outer_class_name + " ::T" );
164
170
}
165
171
THEN (
166
172
" There is a field gt2 of generic type with the generic "
@@ -173,9 +179,9 @@ SCENARIO(
173
179
require_type::require_java_generic_type (
174
180
field.type (),
175
181
{{require_type::type_argument_kindt::Var,
176
- outer_class_prefix + " ::T" },
182
+ generic_inner_class_prefix + " :: " + outer_class_name + " ::T" },
177
183
{require_type::type_argument_kindt::Var,
178
- generic_inner_class_prefix + " ::U" }});
184
+ generic_inner_class_prefix + " ::U" }});
179
185
}
180
186
}
181
187
}
@@ -194,7 +200,9 @@ SCENARIO(
194
200
{
195
201
require_type::require_complete_java_implicitly_generic_class (
196
202
class_symbol.type ,
197
- {outer_class_prefix + " ::T" , outer_class_prefix + " $GenericInner::U" });
203
+ {generic_inner_inner_class_prefix + " ::" + outer_class_name +
204
+ " $GenericInner::U" ,
205
+ generic_inner_inner_class_prefix + " ::" + outer_class_name + " ::T" });
198
206
require_type::require_complete_java_generic_class (
199
207
class_symbol.type , {generic_inner_inner_class_prefix + " ::V" });
200
208
}
0 commit comments