Mercurial > hg > graal-compiler
changeset 8454:fec5ebd058b7
Fixed ecj fails when performing type erasure on void types.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Fri, 22 Mar 2013 18:01:22 +0100 |
parents | ce7aae2d4fc7 |
children | 00d2e017073d |
files | graal/com.oracle.graal.replacements.verifier/src/com/oracle/graal/replacements/verifier/MethodSubstitutionVerifier.java |
diffstat | 1 files changed, 13 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.replacements.verifier/src/com/oracle/graal/replacements/verifier/MethodSubstitutionVerifier.java Fri Mar 22 16:02:43 2013 +0100 +++ b/graal/com.oracle.graal.replacements.verifier/src/com/oracle/graal/replacements/verifier/MethodSubstitutionVerifier.java Fri Mar 22 18:01:22 2013 +0100 @@ -187,11 +187,22 @@ } private boolean isTypeCompatible(TypeMirror originalType, TypeMirror substitutionType) { - TypeMirror original = env.getTypeUtils().erasure(originalType); - TypeMirror substitution = env.getTypeUtils().erasure(substitutionType); + TypeMirror original = originalType; + TypeMirror substitution = substitutionType; + if (needsErasure(original)) { + original = env.getTypeUtils().erasure(original); + } + if (needsErasure(substitution)) { + substitution = env.getTypeUtils().erasure(substitution); + } return env.getTypeUtils().isSameType(original, substitution); } + private static boolean needsErasure(TypeMirror typeMirror) { + return typeMirror.getKind() != TypeKind.NONE && typeMirror.getKind() != TypeKind.VOID && !typeMirror.getKind().isPrimitive() && typeMirror.getKind() != TypeKind.OTHER && + typeMirror.getKind() != TypeKind.NULL; + } + private static TypeElement findEnclosingClass(Element element) { if (element.getKind().isClass()) { return (TypeElement) element;