1 24 25 package org.aspectj.compiler.base.ast; 26 27 import org.aspectj.compiler.base.*; 28 import java.io.IOException ; 29 30 import java.util.*; 31 32 import org.aspectj.compiler.base.bcg.CodeBuilder; 33 import org.aspectj.compiler.base.bcg.Label; 34 35 39 public class PlusOpExpr extends UnopExpr { 40 41 protected LiteralExpr halfFold(Type type, LiteralExpr lit) { 42 return type.foldPlusOp(lit); 43 } 44 45 protected Type discoverType() { 46 Expr rand1 = getRand1(); 47 Type ty1 = rand1.getType(); 48 49 if (ty1 instanceof NumericType) { 50 return getTypeManager().unaryNumericPromotion(ty1); 51 } else { 52 showOperatorTypeError(ty1); 53 return getTypeManager().anyType; 54 } 55 } 56 57 protected Type getLiftType() { 58 return getType(); 59 } 60 61 protected void cgValue(CodeBuilder cb) { 64 Type liftType = getLiftType(); 65 getRand1().cgValue(cb, liftType); 66 } 67 68 70 public PlusOpExpr(SourceLocation location, String _op, Expr _rand1) { 71 super(location, _op, _rand1); 72 73 } 74 protected PlusOpExpr(SourceLocation source) { 75 super(source); 76 } 77 78 public ASTObject copyWalk(CopyWalker walker) { 79 PlusOpExpr ret = new PlusOpExpr(getSourceLocation()); 80 ret.preCopy(walker, this); 81 ret.op = op; 82 if (rand1 != null) ret.setRand1( (Expr)walker.process(rand1) ); 83 return ret; 84 } 85 86 87 public String getDefaultDisplayName() { 88 return "PlusOpExpr(op: "+op+")"; 89 } 90 91 } 93 | Popular Tags |