### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core Index: compiler/org/eclipse/jdt/internal/compiler/ast/CastExpression.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/CastExpression.java,v retrieving revision 1.102 diff -u -r1.102 CastExpression.java --- compiler/org/eclipse/jdt/internal/compiler/ast/CastExpression.java 8 Jun 2006 13:08:57 -0000 1.102 +++ compiler/org/eclipse/jdt/internal/compiler/ast/CastExpression.java 4 Oct 2006 14:39:40 -0000 @@ -326,16 +326,17 @@ int pc = codeStream.position; boolean needRuntimeCheckcast = (this.bits & GenerateCheckcast) != 0; + boolean generateExpression = valueRequired || needRuntimeCheckcast; if (constant != Constant.NotAConstant) { - if (valueRequired || needRuntimeCheckcast) { // Added for: 1F1W9IG: IVJCOM:WINNT - Compiler omits casting check + if (generateExpression) { // Added for: 1F1W9IG: IVJCOM:WINNT - Compiler omits casting check codeStream.generateConstant(constant, implicitConversion); if (needRuntimeCheckcast) { codeStream.checkcast(this.resolvedType); - if (valueRequired) { - codeStream.generateImplicitConversion(this.implicitConversion); - } else { - codeStream.pop(); - } + } + if (valueRequired) { + codeStream.generateImplicitConversion(this.implicitConversion); + } else { + codeStream.pop(); } } codeStream.recordPositionsFrom(pc, this.sourceStart); @@ -344,19 +345,18 @@ expression.generateCode( currentScope, codeStream, - valueRequired || needRuntimeCheckcast); + generateExpression); if (needRuntimeCheckcast && this.expression.postConversionType(currentScope) != this.resolvedType) { // no need to issue a checkcast if already done as genericCast codeStream.checkcast(this.resolvedType); + } + if (generateExpression) { if (valueRequired) { codeStream.generateImplicitConversion(implicitConversion); } else { - codeStream.pop(); + codeStream.pop(); } - } else { - if (valueRequired) - codeStream.generateImplicitConversion(implicitConversion); - } + } codeStream.recordPositionsFrom(pc, this.sourceStart); }