Index: CastExpression.java =================================================================== RCS file: /home/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/CastExpression.java,v retrieving revision 1.53 diff -u -r1.53 CastExpression.java --- CastExpression.java 7 Feb 2004 16:17:16 -0000 1.53 +++ CastExpression.java 2 Apr 2004 22:41:19 -0000 @@ -167,7 +167,7 @@ return false; } else { // a subclass may implement the interface ==> no check at compile time this.bits |= NeedRuntimeCheckCastMASK; - return true; + return(!expressionType.isCompatibleWith(castType)); } } scope.problemReporter().typeCastError(this, castType, expressionType); @@ -200,7 +200,8 @@ if (castType == expressionType) { return false; // identity conversion } - if (Scope.compareTypes(castType, expressionType) == NotRelated) { + int comparison = Scope.compareTypes(castType, expressionType); + if (comparison == NotRelated) { MethodBinding[] castTypeMethods = ((ReferenceBinding) castType).methods(); MethodBinding[] expressionTypeMethods = ((ReferenceBinding) expressionType).methods(); @@ -213,6 +214,9 @@ scope.problemReporter().typeCastError(this, castType, expressionType); } } + } else if (comparison == MoreGeneric) { + // do we really need a runtime check? + return false; } } this.bits |= NeedRuntimeCheckCastMASK;