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