diff options
author | mikaelpeltier <mikaelpeltier@google.com> | 2015-05-19 17:52:55 +0200 |
---|---|---|
committer | Mikael Peltier <mikaelpeltier@google.com> | 2015-05-21 11:43:04 +0000 |
commit | 6f8866b42820efb83640abaae45c5f9dacb943c7 (patch) | |
tree | fadc0232d0d5555a1efcbbf0affd17d0b1317edb /jack/src | |
parent | 2a9ba9420757bba501858d56eada436716fb0d41 (diff) | |
download | toolchain_jack-6f8866b42820efb83640abaae45c5f9dacb943c7.tar.gz toolchain_jack-6f8866b42820efb83640abaae45c5f9dacb943c7.tar.bz2 toolchain_jack-6f8866b42820efb83640abaae45c5f9dacb943c7.zip |
Do not remove type of 'null' expression otherwise type is lost
Bug: 19508222
Change-Id: I839ee69b454bf74dd93a6dffcb900c56fb68c3de
(cherry picked from commit 731bf4c954500229d95fdacf424f7ccad6e5bdcf)
Diffstat (limited to 'jack/src')
-rw-r--r-- | jack/src/com/android/jack/transformations/cast/UselessCastRemover.java | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/jack/src/com/android/jack/transformations/cast/UselessCastRemover.java b/jack/src/com/android/jack/transformations/cast/UselessCastRemover.java index f50fc1f6..42e9c4ea 100644 --- a/jack/src/com/android/jack/transformations/cast/UselessCastRemover.java +++ b/jack/src/com/android/jack/transformations/cast/UselessCastRemover.java @@ -19,7 +19,9 @@ package com.android.jack.transformations.cast; import com.android.jack.Options; import com.android.jack.ir.ast.JCastOperation; import com.android.jack.ir.ast.JDynamicCastOperation; +import com.android.jack.ir.ast.JExpression; import com.android.jack.ir.ast.JMethod; +import com.android.jack.ir.ast.JNullLiteral; import com.android.jack.ir.ast.JReferenceType; import com.android.jack.ir.ast.JType; import com.android.jack.ir.ast.JVisitor; @@ -57,10 +59,14 @@ public class UselessCastRemover implements RunnableSchedulable<JMethod> { @Override public void endVisit(@Nonnull JCastOperation cast) { JType destType = cast.getCastType(); - JType srcType = cast.getExpr().getType(); - if (srcType instanceof JReferenceType && destType instanceof JReferenceType) { - if (((JReferenceType) srcType).canBeSafelyUpcast((JReferenceType) destType)) { - request.append(new Replace(cast, cast.getExpr())); + JExpression castedExpr = cast.getExpr(); + JType srcType = castedExpr.getType(); + // Do not remove cast of 'null' expression otherwise type is lost + if (!(castedExpr instanceof JNullLiteral)) { + if (srcType instanceof JReferenceType && destType instanceof JReferenceType) { + if (((JReferenceType) srcType).canBeSafelyUpcast((JReferenceType) destType)) { + request.append(new Replace(cast, castedExpr)); + } } } super.endVisit(cast); |