home *** CD-ROM | disk | FTP | other *** search
- package espresso;
-
- class Block extends AST {
- Env localEnv;
- AST[] stats;
- int mods = 0;
-
- void print(int var1) {
- if ((this.mods & 8) != 0) {
- System.out.print("static ");
- }
-
- System.out.print("{\n");
- Pretty.indent();
- AST.printStats(this.stats);
- Pretty.undent();
- Pretty.align();
- System.out.print("}");
- }
-
- Item gen() {
- if ((this.mods & 8) != 0) {
- Gen.useCode(this.localEnv.enclClass.clinitcode);
- Gen.entryPoint(0);
- }
-
- int var1 = Gen.nextLocal();
-
- for(int var2 = 0; var2 < this.stats.length; ++var2) {
- this.stats[var2].genDrop();
- }
-
- Gen.endScopes(var1);
- return Item.voidItem;
- }
-
- AST simplify() {
- for(int var1 = 0; var1 < this.stats.length; ++var1) {
- this.stats[var1] = this.stats[var1].simplify();
- }
-
- return this;
- }
-
- void markCaptured(Bits var1) {
- for(int var2 = 0; var2 < this.stats.length; ++var2) {
- this.stats[var2].markCaptured(var1);
- }
-
- }
-
- Typ attr(Env var1, int var2, Typ var3) {
- if (Attr.checkKind(super.pos, 12, var2)) {
- if ((this.mods & 8) != 0) {
- var1 = var1.enclClass.clinitEnv;
- }
-
- this.localEnv = new Env(var1, this, var1.scope.duplicate());
- super.typ = var3;
-
- for(int var4 = 0; var4 < this.stats.length; ++var4) {
- super.typ = Attr.join(this.stats[var4].pos, super.typ, this.stats[var4].attr(this.localEnv, 12, var3));
- }
-
- this.localEnv.scope.leave();
- } else {
- super.typ = Typ.errTyp;
- }
-
- return super.typ;
- }
-
- void pushStat(AST var1) {
- AST[] var2 = new AST[this.stats.length + 1];
- var2[0] = var1;
-
- for(int var3 = 1; var3 < var2.length; ++var3) {
- var2[var3] = this.stats[var3 - 1];
- }
-
- this.stats = var2;
- }
-
- boolean hasConstructors() {
- int var1;
- for(var1 = 0; var1 < this.stats.length && !this.isConstructor(this.stats[var1]); ++var1) {
- }
-
- return var1 < this.stats.length;
- }
-
- private boolean isConstructor(AST var1) {
- return var1 != null && var1.tag == 65 && ((FunDef)var1).name.equals(Predef.initS);
- }
-
- boolean isExpr() {
- return true;
- }
-
- Block(int var1, ASTS var2) {
- super(var1, 17);
- this.stats = var2.shrink();
- }
- }
-