home *** CD-ROM | disk | FTP | other *** search
- package espresso;
-
- import java.io.IOException;
-
- class Import extends AST {
- static Name periodS = Name.fromString(".");
- static Name starS = Name.fromString("*");
- IdRef pid;
-
- void print(int var1) {
- System.out.print("import ");
- this.pid.print();
- }
-
- Item gen() {
- return Item.voidItem;
- }
-
- AST simplify() {
- return this;
- }
-
- Typ attr(Env var1, int var2, Typ var3) {
- super.typ = var3;
- return super.typ;
- }
-
- void enterFields(Env var1) {
- if (this.pid.tag == 2) {
- Typ var2 = ((Select)this.pid).struc.attr(var1, 1, Typ.anyTyp);
- if (var2.tag == 17) {
- if (this.pid.name.equals(starS)) {
- includeDir(var1, super.pos, var2.obj.fullname);
- } else {
- ClassObj var3 = new ClassObj(var2.obj.fullname.append(periodS).append(this.pid.name), this.pid.name);
- includeClass(var1, var3);
- }
- } else if (var2.tag != 0) {
- Report.error(this.pid.pos, String.valueOf("not a package: ").concat(String.valueOf(((IdRef)((Select)this.pid).struc).fullName())));
- }
- }
-
- }
-
- static void includeDir(Env var0, int var1, Name var2) {
- try {
- Scope var3 = ClassFile.directory(var2);
-
- for(ScopeEntry var4 = var3.elements(); var4 != null; var4 = var4.sibling) {
- includeClass(var0, (ClassObj)var4.obj);
- }
- } catch (IOException var6) {
- Report.error(var1, String.valueOf(String.valueOf(String.valueOf("error importing ").concat(String.valueOf(var2))).concat(String.valueOf(": "))).concat(String.valueOf(var6)));
- }
-
- }
-
- static void includeClass(Env var0, ClassObj var1) {
- for(ScopeEntry var2 = var0.importScope.lookup(var1.name); var2.scope == var0.importScope; var2 = var2.next()) {
- if (((ClassObj)var2.obj).fullname.equals(var1.fullname)) {
- return;
- }
- }
-
- var0.importScope.enter(var1);
- }
-
- Import(int var1, IdRef var2) {
- super(var1, 26);
- this.pid = var2;
- }
- }
-