# HG changeset patch # User Christian Humer # Date 1363964563 -3600 # Node ID ce7aae2d4fc78255f642283265895b2baeb0d36d # Parent 9208719445e22d02f7b574f21bb47ee0e158b95b Fixed type variables should be erased before comparing types in MethodSubstiutionVerifier. diff -r 9208719445e2 -r ce7aae2d4fc7 graal/com.oracle.graal.replacements.verifier/src/com/oracle/graal/replacements/verifier/MethodSubstitutionVerifier.java --- a/graal/com.oracle.graal.replacements.verifier/src/com/oracle/graal/replacements/verifier/MethodSubstitutionVerifier.java Fri Mar 22 15:09:53 2013 +0100 +++ b/graal/com.oracle.graal.replacements.verifier/src/com/oracle/graal/replacements/verifier/MethodSubstitutionVerifier.java Fri Mar 22 16:02:43 2013 +0100 @@ -186,16 +186,10 @@ return originalMethod; } - private static boolean isTypeCompatible(TypeMirror originalType, TypeMirror substitutionType) { - /* - * TypeMirrors may contain generic types which deny the types to be equal. So if both types - * are declared we erase the generic types by comparing their corresponding declared - * element. - */ - if (originalType.getKind() == TypeKind.DECLARED && substitutionType.getKind() == TypeKind.DECLARED) { - return ((DeclaredType) originalType).asElement().equals(((DeclaredType) substitutionType).asElement()); - } - return originalType.equals(substitutionType); + private boolean isTypeCompatible(TypeMirror originalType, TypeMirror substitutionType) { + TypeMirror original = env.getTypeUtils().erasure(originalType); + TypeMirror substitution = env.getTypeUtils().erasure(substitutionType); + return env.getTypeUtils().isSameType(original, substitution); } private static TypeElement findEnclosingClass(Element element) {