1 24 25 package org.aspectj.compiler.base.ast; 26 27 import org.aspectj.compiler.base.FlowCheckerPass; 28 import org.aspectj.compiler.base.JavaCompiler; 29 import org.aspectj.compiler.base.CodeWriter; 30 import java.io.IOException ; 31 32 import org.aspectj.compiler.base.bcg.CodeBuilder; 33 34 38 39 public class ClassExpr extends Expr { 40 41 public Type discoverType() { 42 return getTypeManager().getType("java.lang", "Class"); 43 } 44 45 public void unparse(CodeWriter writer) throws IOException { 46 writer.write(typeD); 47 writer.write('.'); 48 writer.writeKeyword("class"); 49 } 50 51 protected void cgValue(CodeBuilder cb) { 54 throw new RuntimeException ("Unhandled expression " + this); 55 } 56 57 protected TypeD typeD; 59 public TypeD getTypeD() { return typeD; } 60 public void setTypeD(TypeD _typeD) { 61 if (_typeD != null) _typeD.setParent(this); 62 typeD = _typeD; 63 } 64 65 public ClassExpr(SourceLocation location, TypeD _typeD) { 66 super(location); 67 setTypeD(_typeD); 68 } 69 protected ClassExpr(SourceLocation source) { 70 super(source); 71 } 72 73 public ASTObject copyWalk(CopyWalker walker) { 74 ClassExpr ret = new ClassExpr(getSourceLocation()); 75 ret.preCopy(walker, this); 76 if (typeD != null) ret.setTypeD( (TypeD)walker.process(typeD) ); 77 return ret; 78 } 79 80 public ASTObject getChildAt(int childIndex) { 81 switch(childIndex) { 82 case 0: return typeD; 83 default: return super.getChildAt(childIndex); 84 } 85 } 86 public String getChildNameAt(int childIndex) { 87 switch(childIndex) { 88 case 0: return "typeD"; 89 default: return super.getChildNameAt(childIndex); 90 } 91 } 92 public void setChildAt(int childIndex, ASTObject child) { 93 switch(childIndex) { 94 case 0: setTypeD((TypeD)child); return; 95 default: super.setChildAt(childIndex, child); return; 96 } 97 } 98 public int getChildCount() { 99 return 1; 100 } 101 102 public String getDefaultDisplayName() { 103 return "ClassExpr()"; 104 } 105 106 } 108 | Popular Tags |