2626
2727import static org .jd .core .v1 .model .javasyntax .declaration .Declaration .FLAG_BRIDGE ;
2828import static org .jd .core .v1 .model .javasyntax .declaration .Declaration .FLAG_SYNTHETIC ;
29+ import static org .jd .core .v1 .model .javasyntax .type .PrimitiveType .TYPE_BYTE ;
2930
3031public class AddCastExpressionVisitor extends AbstractJavaSyntaxVisitor {
3132 protected SearchFirstLineNumberVisitor searchFirstLineNumberVisitor = new SearchFirstLineNumberVisitor ();
@@ -229,7 +230,7 @@ public void visit(SuperConstructorInvocationExpression expression) {
229230 if ((parameters != null ) && (parameters .size () > 0 )) {
230231 boolean unique = typeMaker .matchCount (expression .getObjectType ().getInternalName (), "<init>" , parameters .size (), true ) <= 1 ;
231232 boolean forceCast = !unique && (typeMaker .matchCount (typeBounds , expression .getObjectType ().getInternalName (), "<init>" , parameters , true ) > 1 );
232- expression .setParameters (updateExpressions (((ClassFileSuperConstructorInvocationExpression )expression ).getParameterTypes (), parameters , forceCast , unique ));
233+ expression .setParameters (updateParameters (((ClassFileSuperConstructorInvocationExpression )expression ).getParameterTypes (), parameters , forceCast , unique ));
233234 }
234235 }
235236
@@ -240,7 +241,7 @@ public void visit(ConstructorInvocationExpression expression) {
240241 if ((parameters != null ) && (parameters .size () > 0 )) {
241242 boolean unique = typeMaker .matchCount (expression .getObjectType ().getInternalName (), "<init>" , parameters .size (), true ) <= 1 ;
242243 boolean forceCast = !unique && (typeMaker .matchCount (typeBounds , expression .getObjectType ().getInternalName (), "<init>" , parameters , true ) > 1 );
243- expression .setParameters (updateExpressions (((ClassFileConstructorInvocationExpression )expression ).getParameterTypes (), parameters , forceCast , unique ));
244+ expression .setParameters (updateParameters (((ClassFileConstructorInvocationExpression )expression ).getParameterTypes (), parameters , forceCast , unique ));
244245 }
245246 }
246247
@@ -251,7 +252,7 @@ public void visit(MethodInvocationExpression expression) {
251252 if ((parameters != null ) && (parameters .size () > 0 )) {
252253 boolean unique = typeMaker .matchCount (expression .getInternalTypeName (), expression .getName (), parameters .size (), false ) <= 1 ;
253254 boolean forceCast = !unique && (typeMaker .matchCount (typeBounds , expression .getInternalTypeName (), expression .getName (), parameters , false ) > 1 );
254- expression .setParameters (updateExpressions (((ClassFileMethodInvocationExpression )expression ).getParameterTypes (), parameters , forceCast , unique ));
255+ expression .setParameters (updateParameters (((ClassFileMethodInvocationExpression )expression ).getParameterTypes (), parameters , forceCast , unique ));
255256 }
256257
257258 expression .getExpression ().accept (this );
@@ -264,7 +265,7 @@ public void visit(NewExpression expression) {
264265 if (parameters != null ) {
265266 boolean unique = typeMaker .matchCount (expression .getObjectType ().getInternalName (), "<init>" , parameters .size (), true ) <= 1 ;
266267 boolean forceCast = !unique && (typeMaker .matchCount (typeBounds , expression .getObjectType ().getInternalName (), "<init>" , parameters , true ) > 1 );
267- expression .setParameters (updateExpressions (((ClassFileNewExpression )expression ).getParameterTypes (), parameters , forceCast , unique ));
268+ expression .setParameters (updateParameters (((ClassFileNewExpression )expression ).getParameterTypes (), parameters , forceCast , unique ));
268269 }
269270 }
270271
@@ -328,23 +329,35 @@ public void visit(TernaryOperatorExpression expression) {
328329 }
329330
330331 @ SuppressWarnings ("unchecked" )
331- protected BaseExpression updateExpressions (BaseType types , BaseExpression expressions , boolean forceCast , boolean unique ) {
332+ protected BaseExpression updateParameters (BaseType types , BaseExpression expressions , boolean forceCast , boolean unique ) {
332333 if (expressions != null ) {
333334 if (expressions .isList ()) {
334- DefaultList <Type > t = types .getList ();
335- DefaultList <Expression > e = expressions .getList ();
335+ DefaultList <Type > typeList = types .getList ();
336+ DefaultList <Expression > expressionList = expressions .getList ();
336337
337- for (int i = e .size () - 1 ; i >= 0 ; i --) {
338- e .set (i , updateExpression ( t .get (i ), e .get (i ), forceCast , unique ));
338+ for (int i = expressionList .size () - 1 ; i >= 0 ; i --) {
339+ expressionList .set (i , updateParameter ( typeList .get (i ), expressionList .get (i ), forceCast , unique ));
339340 }
340341 } else {
341- expressions = updateExpression (types .getFirst (), expressions .getFirst (), forceCast , unique );
342+ expressions = updateParameter (types .getFirst (), expressions .getFirst (), forceCast , unique );
342343 }
343344 }
344345
345346 return expressions ;
346347 }
347348
349+ private Expression updateParameter (Type type , Expression expression , boolean forceCast , boolean unique ) {
350+ expression = updateExpression (type , expression , forceCast , unique );
351+
352+ if (type == TYPE_BYTE ) {
353+ if (expression .isIntegerConstantExpression () || expression .isTernaryOperatorExpression ()) {
354+ expression = new CastExpression (TYPE_BYTE , expression );
355+ }
356+ }
357+
358+ return expression ;
359+ }
360+
348361 private Expression updateExpression (Type type , Expression expression , boolean forceCast , boolean unique ) {
349362 if (expression .isNullExpression ()) {
350363 if (forceCast ) {
0 commit comments