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 35 39 public class BitNotOpExpr extends UnopExpr { 40 41 protected LiteralExpr halfFold(Type type, LiteralExpr lit) { 42 return type.foldBitNotOp(lit); 43 } 44 45 protected Type discoverType() { 46 Expr rand1 = getRand1(); 47 Type ty1 = rand1.getType(); 48 49 if (ty1 instanceof IntegralType) { 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 64 protected void cgValue(CodeBuilder cb) { 65 Type liftType = getLiftType(); 66 getRand1().cgValue(cb, liftType); 67 liftType.emitBitNot(cb); 68 } 69 70 72 public BitNotOpExpr(SourceLocation location, String _op, Expr _rand1) { 73 super(location, _op, _rand1); 74 75 } 76 protected BitNotOpExpr(SourceLocation source) { 77 super(source); 78 } 79 80 public ASTObject copyWalk(CopyWalker walker) { 81 BitNotOpExpr ret = new BitNotOpExpr(getSourceLocation()); 82 ret.preCopy(walker, this); 83 ret.op = op; 84 if (rand1 != null) ret.setRand1( (Expr)walker.process(rand1) ); 85 return ret; 86 } 87 88 89 public String getDefaultDisplayName() { 90 return "BitNotOpExpr(op: "+op+")"; 91 } 92 93 } 95 | Popular Tags |