### 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 15:51:55 -0000 @@ -319,10 +319,7 @@ * @param codeStream org.eclipse.jdt.internal.compiler.codegen.CodeStream * @param valueRequired boolean */ - public void generateCode( - BlockScope currentScope, - CodeStream codeStream, - boolean valueRequired) { + public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) { int pc = codeStream.position; boolean needRuntimeCheckcast = (this.bits & GenerateCheckcast) != 0; @@ -331,31 +328,23 @@ codeStream.generateConstant(constant, implicitConversion); if (needRuntimeCheckcast) { codeStream.checkcast(this.resolvedType); - if (valueRequired) { - codeStream.generateImplicitConversion(this.implicitConversion); - } else { - codeStream.pop(); - } + } + if (!valueRequired) { + // the resolveType cannot be double or long + codeStream.pop(); } } codeStream.recordPositionsFrom(pc, this.sourceStart); return; } - expression.generateCode( - currentScope, - codeStream, - valueRequired || needRuntimeCheckcast); - if (needRuntimeCheckcast - && this.expression.postConversionType(currentScope) != this.resolvedType) { // no need to issue a checkcast if already done as genericCast + expression.generateCode(currentScope, codeStream, valueRequired || needRuntimeCheckcast); + if (needRuntimeCheckcast && this.expression.postConversionType(currentScope) != this.resolvedType) { // no need to issue a checkcast if already done as genericCast codeStream.checkcast(this.resolvedType); - if (valueRequired) { - codeStream.generateImplicitConversion(implicitConversion); - } else { - codeStream.pop(); - } - } else { - if (valueRequired) - codeStream.generateImplicitConversion(implicitConversion); + } + if (valueRequired) { + codeStream.generateImplicitConversion(implicitConversion); + } else if (needRuntimeCheckcast) { + codeStream.pop(); } codeStream.recordPositionsFrom(pc, this.sourceStart); }