home *** CD-ROM | disk | FTP | other *** search
- package sun.tools.javac;
-
- import java.io.ByteArrayOutputStream;
- import java.io.DataOutputStream;
- import java.io.IOException;
- import java.io.OutputStream;
- import java.util.Enumeration;
- import java.util.Hashtable;
- import java.util.Vector;
- import sun.tools.asm.Assembler;
- import sun.tools.asm.ConstantPool;
- import sun.tools.java.AmbiguousClass;
- import sun.tools.java.ClassDeclaration;
- import sun.tools.java.ClassDefinition;
- import sun.tools.java.ClassFile;
- import sun.tools.java.ClassNotFound;
- import sun.tools.java.CompilerError;
- import sun.tools.java.Constants;
- import sun.tools.java.Environment;
- import sun.tools.java.FieldDefinition;
- import sun.tools.java.Identifier;
- import sun.tools.java.IdentifierToken;
- import sun.tools.java.Imports;
- import sun.tools.java.Type;
- import sun.tools.tree.AssignExpression;
- import sun.tools.tree.CompoundStatement;
- import sun.tools.tree.Context;
- import sun.tools.tree.Expression;
- import sun.tools.tree.ExpressionStatement;
- import sun.tools.tree.FieldExpression;
- import sun.tools.tree.IdentifierExpression;
- import sun.tools.tree.LocalField;
- import sun.tools.tree.MethodExpression;
- import sun.tools.tree.Node;
- import sun.tools.tree.ReturnStatement;
- import sun.tools.tree.Statement;
- import sun.tools.tree.StringExpression;
- import sun.tools.tree.SuperExpression;
- import sun.tools.tree.ThisExpression;
- import sun.tools.tree.UplevelReference;
- import sun.tools.tree.Vset;
-
- public class SourceClass extends ClassDefinition {
- Environment toplevelEnv;
- SourceField defConstructor;
- ConstantPool tab = new ConstantPool();
- Hashtable deps = new Hashtable(11);
- LocalField thisArg;
- int endPosition;
- private boolean sourceFileChecked;
- private boolean basicChecking = false;
- private boolean basicCheckDone = false;
- private boolean inlinedLocalClass = false;
- private static Vector active = new Vector();
-
- public SourceClass(Environment var1, int var2, ClassDeclaration var3, String var4, int var5, IdentifierToken var6, IdentifierToken[] var7, SourceClass var8) {
- super(var1.getSource(), var2, var3, var5, var6, var7);
- ((ClassDefinition)this).setOuterClass(var8);
- this.toplevelEnv = var1;
- super.documentation = var4;
- if (ClassDefinition.containsDeprecated(var4)) {
- super.modifiers |= 262144;
- }
-
- if (((ClassDefinition)this).isStatic() && (var8 == null || !((ClassDefinition)var8).isTopLevel())) {
- if (var8 == null) {
- var1.error(var2, "static.class", this);
- } else {
- var1.error(var2, "static.inner.class", this);
- }
-
- super.modifiers &= -9;
- if (super.innerClassField != null) {
- super.innerClassField.subModifiers(8);
- }
- }
-
- if (((ClassDefinition)this).isPrivate() && var8 == null) {
- var1.error(var2, "private.class", this);
- super.modifiers &= -3;
- }
-
- if (((ClassDefinition)this).isProtected() && var8 == null) {
- var1.error(var2, "protected.class", this);
- super.modifiers &= -5;
- }
-
- if (!((ClassDefinition)this).isTopLevel() && !((ClassDefinition)this).isLocal()) {
- LocalField var9 = var8.getThisArgument();
- UplevelReference var10 = ((ClassDefinition)this).getReference(var9);
- ((ClassDefinition)this).setOuterField(var10.getLocalField(var1));
- }
-
- for(Object var11 = var8; var11 != null; var11 = ((ClassDefinition)var11).getOuterClass()) {
- if (((ClassDefinition)this).getName().getFlatName().getName().equals(((ClassDefinition)var11).getName().getFlatName().getName())) {
- var1.error(var2, "inner.redefined", ((ClassDefinition)this).getName().getFlatName().getName());
- }
- }
-
- }
-
- public int getEndPosition() {
- return this.endPosition;
- }
-
- public void setEndPosition(int var1) {
- this.endPosition = var1;
- }
-
- public String getAbsoluteName() {
- String var1 = ((ClassFile)((ClassDefinition)this).getSource()).getAbsoluteName();
- return var1;
- }
-
- public Imports getImports() {
- return this.toplevelEnv.getImports();
- }
-
- public LocalField getThisArgument() {
- if (this.thisArg == null) {
- this.thisArg = new LocalField(super.where, this, 0, ((ClassDefinition)this).getType(), Constants.idThis);
- }
-
- return this.thisArg;
- }
-
- public void addDependency(ClassDeclaration var1) {
- if (this.tab != null) {
- this.tab.put(var1);
- }
-
- if (this.toplevelEnv.print_dependencies() && var1 != ((ClassDefinition)this).getClassDeclaration()) {
- this.deps.put(var1, var1);
- }
-
- }
-
- void checkOverride(Environment var1, ClassDeclaration var2, FieldDefinition var3) throws ClassNotFound {
- ClassDefinition var4 = var2.getClassDefinition(var1);
-
- for(FieldDefinition var5 = var4.getFirstMatch(var3.getName()); var5 != null; var5 = var5.getNextMatch()) {
- if (!var5.isPrivate() && !var5.isVariable() && var3.getType().equalArguments(var5.getType())) {
- if (!var5.isProtected() && !var5.isPublic() && !var5.isPrivate() && !var3.isConstructor() && !((ClassDefinition)this).getName().getQualifier().equals(var2.getName().getQualifier())) {
- var1.error(var3.getWhere(), "warn.no.override.access", var3, this, var5.getClassDeclaration());
- } else {
- if (var5.isFinal()) {
- var1.error(var3.getWhere(), "final.meth.override", var3, var5.getClassDeclaration());
- return;
- }
-
- Type var6 = var3.getType().getReturnType();
- Type var7 = var5.getType().getReturnType();
- if (!var6.equals(var7)) {
- var1.error(var3.getWhere(), "redef.return.type", var3, var5);
- return;
- }
-
- if (var3.isStatic() != var5.isStatic()) {
- String var15 = var5.isStatic() ? "override.static.meth" : "override.instance.method.static";
- var1.error(var3.getWhere(), var15, var5, var5.getClassDeclaration());
- return;
- }
-
- if (!var3.isConstructor()) {
- if (!var3.isPublic() && !var5.isPrivate()) {
- if (var5.isPublic()) {
- var1.error(var3.getWhere(), "override.public", var5, var5.getClassDeclaration());
- return;
- }
-
- if (var5.isProtected() && !var3.isProtected()) {
- var1.error(var3.getWhere(), "override.protected", var5, var5.getClassDeclaration());
- return;
- }
-
- if (var3.isPrivate()) {
- var1.error(var3.getWhere(), "override.private", var5, var5.getClassDeclaration());
- return;
- }
- }
-
- if (var5.reportDeprecated(var1) && !var3.isDeprecated()) {
- var1.error(var3.getWhere(), "warn.override.is.deprecated", var5, var5.getClassDeclaration(), ((ClassDefinition)this).getClassDeclaration());
- }
-
- ClassDeclaration[] var8 = var3.getExceptions(var1);
- ClassDeclaration[] var9 = var5.getExceptions(var1);
-
- label98:
- for(int var10 = 0; var10 < var8.length; ++var10) {
- ClassDefinition var11 = var8[var10].getClassDefinition(var1);
-
- for(int var12 = 0; var12 < var9.length; ++var12) {
- if (var11.subClassOf(var1, var9[var12])) {
- continue label98;
- }
- }
-
- if (!var11.subClassOf(var1, var1.getClassDeclaration(Constants.idJavaLangError)) && !var11.subClassOf(var1, var1.getClassDeclaration(Constants.idJavaLangRuntimeException))) {
- var1.error(var3.getWhere(), "invalid.throws", var11, var5, var5.getClassDeclaration());
- break;
- }
- }
- }
- }
- }
- }
-
- if (var4.getSuperClass() != null) {
- this.checkOverride(var1, var4.getSuperClass(), var3);
- }
-
- ClassDeclaration[] var13 = var4.getInterfaces();
-
- for(int var14 = 0; var14 < var13.length; ++var14) {
- this.checkOverride(var1, var13[var14], var3);
- }
-
- }
-
- public void addField(Environment var1, FieldDefinition var2) {
- switch (var2.getModifiers() & 7) {
- case 3:
- default:
- var1.error(var2.getWhere(), "warn.inconsistent.modifier", var2);
- if (var2.isPublic()) {
- var2.subModifiers(6);
- } else {
- var2.subModifiers(2);
- }
- case 0:
- case 1:
- case 2:
- case 4:
- if (var2.isStatic() && !((ClassDefinition)this).isTopLevel()) {
- if (var2.isMethod()) {
- var1.error(super.where, "static.inner.method", var2, this);
- } else if (var2.isVariable()) {
- var1.error(super.where, "static.inner.field", var2.getName(), this);
- }
-
- var2.subModifiers(8);
- }
-
- if (var2.isMethod()) {
- if (var2.isConstructor()) {
- if (var2.getClassDefinition().isInterface()) {
- var1.error(var2.getWhere(), "intf.constructor");
- return;
- }
-
- if (var2.isNative() || var2.isAbstract() || var2.isStatic() || var2.isSynchronized() || var2.isFinal()) {
- var1.error(var2.getWhere(), "constr.modifier", var2);
- var2.subModifiers(1336);
- }
- } else if (var2.isInitializer() && var2.getClassDefinition().isInterface()) {
- var1.error(var2.getWhere(), "intf.initializer");
- return;
- }
-
- if (var2.getClassDefinition().isInterface() && (var2.isStatic() || var2.isSynchronized() || var2.isNative() || var2.isFinal() || var2.isPrivate() || var2.isProtected())) {
- var1.error(var2.getWhere(), "intf.modifier.method", var2);
- var2.subModifiers(314);
- }
-
- if (var2.isTransient()) {
- var1.error(var2.getWhere(), "transient.meth", var2);
- var2.subModifiers(128);
- }
-
- if (var2.isVolatile()) {
- var1.error(var2.getWhere(), "volatile.meth", var2);
- var2.subModifiers(64);
- }
-
- if (var2.isStatic() && var2.isAbstract()) {
- var1.error(var2.getWhere(), "static.modifier", var2);
- var2.subModifiers(8);
- }
-
- if (!var2.isAbstract() && !var2.isNative()) {
- if (var2.getValue() == null) {
- if (var2.isConstructor()) {
- var1.error(var2.getWhere(), "no.constructor.body", var2);
- } else {
- var1.error(var2.getWhere(), "no.meth.body", var2);
- }
-
- var2.addModifiers(1024);
- }
- } else if (var2.getValue() != null) {
- var1.error(var2.getWhere(), "invalid.meth.body", var2);
- var2.setValue((Node)null);
- }
-
- Vector var3 = var2.getArguments();
- if (var3 != null) {
- var3.size();
- Type[] var4 = var2.getType().getArgumentTypes();
-
- for(int var5 = 0; var5 < var4.length; ++var5) {
- Object var6 = var3.elementAt(var5);
- int var7 = var2.getWhere();
- if (var6 instanceof FieldDefinition) {
- var7 = ((FieldDefinition)var6).getWhere();
- var6 = ((FieldDefinition)var6).getName();
- }
-
- if (var4[var5].isType(11)) {
- var1.error(var7, "void.argument", var6);
- }
- }
- }
- } else if (var2.isInnerClass()) {
- if (var2.isVolatile() || var2.isTransient() || var2.isNative() || var2.isSynchronized()) {
- var1.error(var2.getWhere(), "inner.modifier", var2);
- var2.subModifiers(480);
- }
-
- if (var2.getClassDefinition().isInterface() && (var2.isPrivate() || var2.isProtected())) {
- var1.error(var2.getWhere(), "intf.modifier.field", var2);
- var2.subModifiers(6);
- var2.addModifiers(1);
- }
- } else {
- if (var2.getType().isType(11)) {
- var1.error(var2.getWhere(), "void.inst.var", var2.getName());
- return;
- }
-
- if (var2.isSynchronized() || var2.isAbstract() || var2.isNative()) {
- var1.error(var2.getWhere(), "var.modifier", var2);
- var2.subModifiers(1312);
- }
-
- if (var2.isTransient() && ((ClassDefinition)this).isInterface()) {
- var1.error(var2.getWhere(), "transient.modifier", var2);
- var2.subModifiers(128);
- }
-
- if (var2.isVolatile() && (((ClassDefinition)this).isInterface() || var2.isFinal())) {
- var1.error(var2.getWhere(), "volatile.modifier", var2);
- var2.subModifiers(64);
- }
-
- if (var2.isFinal() && var2.getValue() == null && (((ClassDefinition)this).isInterface() || !var1.innerClasses())) {
- var1.error(var2.getWhere(), "initializer.needed", var2);
- var2.subModifiers(16);
- }
-
- if (var2.getClassDefinition().isInterface() && (var2.isPrivate() || var2.isProtected())) {
- var1.error(var2.getWhere(), "intf.modifier.field", var2);
- var2.subModifiers(6);
- var2.addModifiers(1);
- }
- }
-
- if (!var2.isInitializer()) {
- for(FieldDefinition var8 = ((ClassDefinition)this).getFirstMatch(var2.getName()); var8 != null; var8 = var8.getNextMatch()) {
- if (var2.isVariable() && var8.isVariable()) {
- var1.error(var2.getWhere(), "var.multidef", var2, var8);
- return;
- }
-
- if (var2.isInnerClass() && var8.isInnerClass() && !var2.getInnerClass().isLocal() && !var8.getInnerClass().isLocal()) {
- var1.error(var2.getWhere(), "inner.class.multidef", var2);
- return;
- }
- }
- }
-
- super.addField(var1, var2);
- }
- }
-
- private void addAbstractMethodsFromInterfaces(Environment var1, ClassDefinition var2) throws ClassNotFound {
- if (var2.isInterface()) {
- for(FieldDefinition var3 = var2.getFirstField(); var3 != null; var3 = var3.getNextField()) {
- if (var3.isMethod() && var3.isAbstract()) {
- FieldDefinition var4 = ((ClassDefinition)this).findMethod(var1, var3.getName(), var3.getType());
- if (var4 != null && var4.getType().equals(var3.getType())) {
- if (var3.isPublic() && !var4.isPublic()) {
- var1.error(((ClassDefinition)this).getWhere(), "private.intf.method", this, var4, var2);
- }
- } else {
- SourceField var5 = new SourceField(var3, this, var1);
- ((ClassDefinition)this).addField(var5);
- }
- }
- }
- }
-
- ClassDeclaration[] var7 = var2.getInterfaces();
-
- for(int var8 = 0; var8 < var7.length; ++var8) {
- ClassDefinition var6 = var7[var8].getClassDefinition(var1);
- this.addAbstractMethodsFromInterfaces(var1, var6);
- }
-
- }
-
- public Environment setupEnv(Environment var1) {
- return new Environment(this.toplevelEnv, this);
- }
-
- public boolean reportDeprecated(Environment var1) {
- return false;
- }
-
- public void noteUsedBy(ClassDefinition var1, int var2, Environment var3) {
- super.noteUsedBy(var1, var2, var3);
-
- Object var4;
- for(var4 = this; ((ClassDefinition)var4).isInnerClass(); var4 = ((ClassDefinition)var4).getOuterClass()) {
- }
-
- if (!((ClassDefinition)var4).isPublic()) {
- while(var1.isInnerClass()) {
- var1 = var1.getOuterClass();
- }
-
- if (!((ClassDefinition)var4).getSource().equals(var1.getSource())) {
- ((SourceClass)var4).checkSourceFile(var3, var2);
- }
- }
- }
-
- public void check(Environment var1) throws ClassNotFound {
- if (((ClassDefinition)this).isInsideLocal()) {
- ((ClassDefinition)this).getOuterClass().check(var1);
- } else {
- if (((ClassDefinition)this).isInnerClass()) {
- ((SourceClass)((ClassDefinition)this).getOuterClass()).maybeCheck(var1);
- }
-
- Vset var2 = new Vset();
- Object var3 = null;
- this.checkInternal(this.setupEnv(var1), (Context)var3, var2);
- }
- }
-
- private void maybeCheck(Environment var1) throws ClassNotFound {
- ClassDeclaration var2 = ((ClassDefinition)this).getClassDeclaration();
- if (var2.getStatus() == 4) {
- var2.setDefinition(this, 7);
- this.check(var1);
- }
-
- }
-
- private Vset checkInternal(Environment var1, Context var2, Vset var3) throws ClassNotFound {
- Identifier var4 = ((ClassDefinition)this).getClassDeclaration().getName();
- if (var1.verbose()) {
- var1.output("[checking class " + var4 + "]");
- }
-
- this.basicCheck(Context.newEnvironment(var1, var2));
- if (!((ClassDefinition)this).isInnerClass() && !((ClassDefinition)this).isInsideLocal()) {
- var4 = var4.getName();
-
- try {
- Imports var5 = this.toplevelEnv.getImports();
- Identifier var11 = var5.resolve(var1, var4);
- if (var11 != ((ClassDefinition)this).getName()) {
- var1.error(super.where, "class.multidef.import", var4, var11);
- }
- } catch (AmbiguousClass var7) {
- Identifier var6 = var7.name1 != ((ClassDefinition)this).getName() ? var7.name1 : var7.name2;
- var1.error(super.where, "class.multidef.import", var4, var6);
- } catch (ClassNotFound var8) {
- }
-
- if (((ClassDefinition)this).isPublic()) {
- this.checkSourceFile(var1, ((ClassDefinition)this).getWhere());
- }
- }
-
- var3 = this.checkFields(var1, var2, var3);
- return var3;
- }
-
- public void checkSourceFile(Environment var1, int var2) {
- if (!this.sourceFileChecked) {
- this.sourceFileChecked = true;
- String var3 = ((ClassDefinition)this).getName().getName() + ".java";
- String var4 = ((ClassFile)((ClassDefinition)this).getSource()).getName();
- if (var1.warnings() && !var4.equals(var3)) {
- if (((ClassDefinition)this).isPublic()) {
- var1.error(var2, "public.class.file", this, var3);
- return;
- }
-
- var1.error(var2, "warn.package.class.file", this, var4, var3);
- }
-
- }
- }
-
- private void checkSupers(Environment var1) throws ClassNotFound {
- if (((ClassDefinition)this).isInterface()) {
- if (((ClassDefinition)this).isFinal()) {
- Identifier var2 = ((ClassDefinition)this).getClassDeclaration().getName();
- var1.error(((ClassDefinition)this).getWhere(), "final.intf", var2);
- }
- } else if (((ClassDefinition)this).getSuperClass(var1) != null) {
- int var8 = ((ClassDefinition)this).getWhere();
- var8 = IdentifierToken.getWhere(super.superClassId, var8);
-
- try {
- ClassDefinition var3 = ((ClassDefinition)this).getSuperClass().getClassDefinition(var1);
- var3.resolveTypeStructure(var1);
- if (!((ClassDefinition)this).canAccess(var1, ((ClassDefinition)this).getSuperClass())) {
- var1.error(var8, "cant.access.class", ((ClassDefinition)this).getSuperClass());
- super.superClass = null;
- } else if (var3.isFinal()) {
- var1.error(var8, "super.is.final", ((ClassDefinition)this).getSuperClass());
- super.superClass = null;
- } else if (var3.isInterface()) {
- var1.error(var8, "super.is.intf", ((ClassDefinition)this).getSuperClass());
- super.superClass = null;
- } else if (((ClassDefinition)this).superClassOf(var1, ((ClassDefinition)this).getSuperClass())) {
- var1.error(var8, "cyclic.super");
- super.superClass = null;
- } else {
- var3.noteUsedBy(this, var8, var1);
- }
-
- if (super.superClass == null) {
- var3 = null;
- }
-
- ClassDefinition var4 = var3;
-
- while(true) {
- if (((ClassDefinition)this).enclosingClassOf(var4)) {
- var1.error(var8, "super.is.inner");
- super.superClass = null;
- break;
- }
-
- ClassDeclaration var5 = var4.getSuperClass(var1);
- if (var5 == null) {
- break;
- }
-
- var4 = var5.getClassDefinition(var1);
- }
- } catch (ClassNotFound var7) {
- var1.error(var8, "super.not.found", var7.name, this);
- super.superClass = null;
- }
- } else if (((ClassDefinition)this).isAnonymous()) {
- throw new CompilerError("anonymous super");
- }
-
- for(int var10 = 0; var10 < super.interfaces.length; ++var10) {
- ClassDeclaration var11 = super.interfaces[var10];
- int var12 = ((ClassDefinition)this).getWhere();
- if (super.interfaceIds != null && super.interfaceIds.length == super.interfaces.length) {
- var12 = IdentifierToken.getWhere(super.interfaceIds[var10], var12);
- }
-
- try {
- ClassDefinition var13 = var11.getClassDefinition(var1);
- var13.resolveTypeStructure(var1);
- if (!((ClassDefinition)this).canAccess(var1, var11)) {
- var1.error(var12, "cant.access.class", var11);
- } else if (!var11.getClassDefinition(var1).isInterface()) {
- var1.error(var12, "not.intf", var11);
- } else {
- if (!((ClassDefinition)this).isInterface() || !((ClassDefinition)this).implementedBy(var1, var11)) {
- var13.noteUsedBy(this, var12, var1);
- continue;
- }
-
- var1.error(var12, "cyclic.intf", var11);
- }
- } catch (ClassNotFound var6) {
- var1.error(var12, "intf.not.found", var6.name, this);
- }
-
- ClassDeclaration[] var14 = new ClassDeclaration[super.interfaces.length - 1];
- System.arraycopy(super.interfaces, 0, var14, 0, var10);
- System.arraycopy(super.interfaces, var10 + 1, var14, var10, var14.length - var10);
- super.interfaces = var14;
- --var10;
- }
-
- }
-
- private Vset checkFields(Environment var1, Context var2, Vset var3) throws ClassNotFound {
- if (((ClassDefinition)this).getError()) {
- return var3;
- } else {
- try {
- for(FieldDefinition var4 = ((ClassDefinition)this).getFirstField(); var4 != null; var4 = var4.getNextField()) {
- if (!var4.isVariable() && !var4.isInitializer()) {
- if (((ClassDefinition)this).getSuperClass() != null) {
- this.checkOverride(var1, ((ClassDefinition)this).getSuperClass(), var4);
- }
-
- for(int var5 = 0; var5 < super.interfaces.length; ++var5) {
- this.checkOverride(var1, super.interfaces[var5], var4);
- }
- }
- }
- } catch (ClassNotFound var18) {
- var1.error(((ClassDefinition)this).getWhere(), "class.not.found", var18.name, this);
- }
-
- if (((ClassDefinition)this).getError()) {
- return var3;
- } else {
- if (((ClassDefinition)this).isFinal() && ((ClassDefinition)this).isAbstract()) {
- var1.error(super.where, "final.abstract", ((ClassDefinition)this).getName().getName());
- }
-
- if (!((ClassDefinition)this).isInterface() && !((ClassDefinition)this).isAbstract() && ((ClassDefinition)this).isAbstract(var1)) {
- super.modifiers |= 1024;
- String var19 = ((ClassDefinition)this).isFinal() ? "abstract.class.not.final" : "abstract.class";
- Enumeration var21 = ((ClassDefinition)this).getAbstractFields(var1);
-
- while(var21.hasMoreElements()) {
- FieldDefinition var6 = (FieldDefinition)var21.nextElement();
- var1.error(super.where, var19, this, var6, var6.getDefiningClassDeclaration());
- }
- }
-
- Context var20 = new Context(var2);
- Vset var22 = var3.copy();
- Vset var24 = var3.copy();
-
- for(FieldDefinition var7 = ((ClassDefinition)this).getFirstField(); var7 != null; var7 = var7.getNextField()) {
- if (var7.isVariable() && var7.isBlankFinal()) {
- int var8 = var20.declareMemberNumber(var7);
- if (var7.isStatic()) {
- var24 = var24.addVarUnassigned(var8);
- var22 = var22.addVar(var8);
- } else {
- var22 = var22.addVarUnassigned(var8);
- var24 = var24.addVar(var8);
- }
- }
- }
-
- Context var25 = new Context(var20, this);
- LocalField var9 = this.getThisArgument();
- int var10 = var25.declare(var1, var9);
- var22 = var22.addVar(var10);
- int var11 = ((ClassDefinition)this).getWhere();
-
- for(FieldDefinition var12 = ((ClassDefinition)this).getFirstField(); var12 != null; var12 = var12.getNextField()) {
- try {
- if (var12.isVariable() || var12.isInitializer()) {
- if (var12.isStatic()) {
- var24 = var12.check(var1, var20, var24);
- if (var12.isInitializer()) {
- var11 = var12.getWhere();
- }
- } else {
- var22 = var12.check(var1, var25, var22);
- }
- }
- } catch (ClassNotFound var17) {
- var1.error(var12.getWhere(), "class.not.found", var17.name, this);
- }
- }
-
- this.checkBlankFinals(var1, var20, var24, true, var11);
-
- for(FieldDefinition var13 = ((ClassDefinition)this).getFirstField(); var13 != null; var13 = var13.getNextField()) {
- try {
- if (var13.isConstructor()) {
- Vset var14 = var13.check(var1, var20, var22.copy());
- this.checkBlankFinals(var1, var20, var14, false, var13.getWhere());
- } else {
- var13.check(var1, var2, var3.copy());
- }
- } catch (ClassNotFound var16) {
- var1.error(var13.getWhere(), "class.not.found", var16.name, this);
- }
- }
-
- for(FieldDefinition var26 = ((ClassDefinition)this).getFirstField(); var26 != null; var26 = var26.getNextField()) {
- if (var26.isInnerClass()) {
- SourceClass var15 = (SourceClass)var26.getInnerClass();
- if (!((ClassDefinition)var15).isInsideLocal()) {
- var15.maybeCheck(var1);
- }
- }
- }
-
- return var3;
- }
- }
- }
-
- private void checkBlankFinals(Environment var1, Context var2, Vset var3, boolean var4, int var5) {
- for(int var6 = 0; var6 < var2.getVarNumber(); ++var6) {
- if (!var3.testVar(var6)) {
- FieldDefinition var7 = var2.getElement(var6);
- if (var7 != null && var7.isBlankFinal() && var7.isStatic() == var4 && var7.getClassDefinition() == this) {
- var1.error(var5, "final.var.not.initialized", var7.getName());
- }
- }
- }
-
- }
-
- protected void basicCheck(Environment var1) throws ClassNotFound {
- super.basicCheck(var1);
- if (!this.basicChecking && !this.basicCheckDone) {
- this.basicChecking = true;
- var1 = this.setupEnv(var1);
- Imports var2 = var1.getImports();
- if (var2 != null) {
- var2.resolve(var1);
- }
-
- this.resolveTypeStructure(var1);
- this.checkSupers(var1);
- if (!((ClassDefinition)this).isInterface()) {
- if (!((ClassDefinition)this).hasConstructor()) {
- CompoundStatement var3 = new CompoundStatement(((ClassDefinition)this).getWhere(), new Statement[0]);
- Type var4 = Type.tMethod(Type.tVoid);
- var1.makeFieldDefinition(var1, ((ClassDefinition)this).getWhere(), this, (String)null, ((ClassDefinition)this).isPublic() ? 1 : 0, var4, Constants.idInit, (IdentifierToken[])null, (IdentifierToken[])null, var3);
- }
-
- if (!((ClassDefinition)this).getError()) {
- this.addAbstractMethodsFromInterfaces(var1, this);
- }
- }
-
- this.basicChecking = false;
- this.basicCheckDone = true;
- }
- }
-
- public void resolveTypeStructure(Environment var1) {
- ClassDefinition var2 = ((ClassDefinition)this).getOuterClass();
- if (var2 != null && var2 instanceof SourceClass && !((SourceClass)var2).resolved) {
- ((SourceClass)var2).resolveTypeStructure(var1);
- }
-
- if (!super.resolved) {
- super.resolved = true;
- var1 = this.setupEnv(var1);
- this.resolveSupers(var1);
-
- for(FieldDefinition var3 = ((ClassDefinition)this).getFirstField(); var3 != null; var3 = var3.getNextField()) {
- if (var3 instanceof SourceField) {
- ((SourceField)var3).resolveTypeStructure(var1);
- }
- }
-
- for(FieldDefinition var4 = ((ClassDefinition)this).getFirstField(); var4 != null; var4 = var4.getNextField()) {
- if (!var4.isInitializer() && var4.isMethod()) {
- FieldDefinition var5 = var4;
-
- while((var5 = var5.getNextMatch()) != null) {
- if (var5.isMethod()) {
- if (var4.getType().equals(var5.getType())) {
- var1.error(var4.getWhere(), "meth.multidef", var4);
- } else if (var4.getType().equalArguments(var5.getType())) {
- var1.error(var4.getWhere(), "meth.redef.rettype", var4, var5);
- }
- }
- }
- }
- }
-
- }
- }
-
- protected void resolveSupers(Environment var1) {
- if (super.superClassId != null && super.superClass == null) {
- super.superClass = this.resolveSuper(var1, super.superClassId);
- if (super.superClass == ((ClassDefinition)this).getClassDeclaration() && ((ClassDefinition)this).getName().equals(Constants.idJavaLangObject)) {
- super.superClass = null;
- super.superClassId = null;
- }
- }
-
- if (super.interfaceIds != null && super.interfaces == null) {
- super.interfaces = new ClassDeclaration[super.interfaceIds.length];
-
- for(int var2 = 0; var2 < super.interfaces.length; ++var2) {
- super.interfaces[var2] = this.resolveSuper(var1, super.interfaceIds[var2]);
-
- for(int var3 = 0; var3 < var2; ++var3) {
- if (super.interfaces[var2] == super.interfaces[var3]) {
- Identifier var4 = super.interfaceIds[var2].getName();
- int var5 = super.interfaceIds[var3].getWhere();
- var1.error(var5, "intf.repeated", var4);
- }
- }
- }
- }
-
- }
-
- private ClassDeclaration resolveSuper(Environment var1, IdentifierToken var2) {
- Identifier var3 = var2.getName();
- if (((ClassDefinition)this).isInnerClass()) {
- var3 = super.outerClass.resolveName(var1, var3);
- } else {
- var3 = var1.resolveName(var3);
- }
-
- return var1.getClassDeclaration(var3);
- }
-
- public Vset checkLocalClass(Environment var1, Context var2, Vset var3, ClassDefinition var4, Expression[] var5, Type[] var6) throws ClassNotFound {
- var1 = this.setupEnv(var1);
- if (var4 != null != ((ClassDefinition)this).isAnonymous()) {
- throw new CompilerError("resolveAnonymousStructure");
- } else {
- if (((ClassDefinition)this).isAnonymous()) {
- this.resolveAnonymousStructure(var1, var4, var5, var6);
- }
-
- var3 = this.checkInternal(var1, var2, var3);
- ((ClassDefinition)this).getClassDeclaration().setDefinition(this, 7);
- return var3;
- }
- }
-
- public void inlineLocalClass(Environment var1) {
- for(FieldDefinition var2 = ((ClassDefinition)this).getFirstField(); var2 != null; var2 = var2.getNextField()) {
- if (!var2.isVariable() && !var2.isInitializer() || var2.isStatic()) {
- try {
- ((SourceField)var2).inline(var1);
- } catch (ClassNotFound var4) {
- var1.error(var2.getWhere(), "class.not.found", var4.name, this);
- }
- }
- }
-
- if (((ClassDefinition)this).getReferencesFrozen() != null && !this.inlinedLocalClass) {
- this.inlinedLocalClass = true;
-
- for(FieldDefinition var3 = ((ClassDefinition)this).getFirstField(); var3 != null; var3 = var3.getNextField()) {
- if (var3.isConstructor()) {
- ((SourceField)var3).addUplevelArguments(false);
- }
- }
- }
-
- }
-
- public Vset checkInsideClass(Environment var1, Context var2, Vset var3) throws ClassNotFound {
- if (((ClassDefinition)this).isInsideLocal() && !((ClassDefinition)this).isLocal()) {
- return this.checkInternal(var1, var2, var3);
- } else {
- throw new CompilerError("checkInsideClass");
- }
- }
-
- private void resolveAnonymousStructure(Environment var1, ClassDefinition var2, Expression[] var3, Type[] var4) throws ClassNotFound {
- if (super.superClass == null && super.superClassId.getName() == Constants.idNull) {
- if (var2.isInterface()) {
- int var5 = super.interfaces == null ? 0 : super.interfaces.length;
- ClassDeclaration[] var6 = new ClassDeclaration[1 + var5];
- if (var5 > 0) {
- System.arraycopy(super.interfaces, 0, var6, 1, var5);
- if (super.interfaceIds != null && super.interfaceIds.length == var5) {
- IdentifierToken[] var7 = new IdentifierToken[1 + var5];
- System.arraycopy(super.interfaceIds, 0, var7, 1, var5);
- var7[0] = new IdentifierToken(var2.getName());
- }
- }
-
- var6[0] = var2.getClassDeclaration();
- super.interfaces = var6;
- var2 = this.toplevelEnv.getClassDefinition(Constants.idJavaLangObject);
- }
-
- super.superClass = var2.getClassDeclaration();
- if (((ClassDefinition)this).hasConstructor()) {
- throw new CompilerError("anonymous constructor");
- } else {
- Type var17 = Type.tMethod(Type.tVoid, var4);
- IdentifierToken[] var18 = new IdentifierToken[var4.length];
-
- for(int var19 = 0; var19 < var18.length; ++var19) {
- var18[var19] = new IdentifierToken(var3[var19].getWhere(), Identifier.lookup("$" + var19));
- }
-
- int var8 = !var2.isTopLevel() && !var2.isLocal() ? 1 : 0;
- Expression[] var9 = new Expression[-var8 + var3.length];
-
- for(int var10 = var8; var10 < var3.length; ++var10) {
- var9[-var8 + var10] = new IdentifierExpression(var18[var10]);
- }
-
- int var11 = ((ClassDefinition)this).getWhere();
- SuperExpression var12;
- if (var8 == 0) {
- var12 = new SuperExpression(var11);
- } else {
- var12 = new SuperExpression(var11, new IdentifierExpression(var18[0]));
- }
-
- MethodExpression var13 = new MethodExpression(var11, var12, Constants.idInit, var9);
- Statement[] var14 = new Statement[]{new ExpressionStatement(var11, var13)};
- CompoundStatement var15 = new CompoundStatement(var11, var14);
- int var16 = 524288;
- var1.makeFieldDefinition(var1, var11, this, (String)null, var16, var17, Constants.idInit, var18, (IdentifierToken[])null, var15);
- }
- } else {
- throw new CompilerError("superclass " + super.superClass);
- }
- }
-
- public FieldDefinition getAccessField(Environment var1, Context var2, FieldDefinition var3) {
- return this.getAccessField(var1, var2, var3, false);
- }
-
- public FieldDefinition getUpdateField(Environment var1, Context var2, FieldDefinition var3) {
- if (!var3.isVariable()) {
- throw new CompilerError("method");
- } else {
- return this.getAccessField(var1, var2, var3, true);
- }
- }
-
- private FieldDefinition getAccessField(Environment var1, Context var2, FieldDefinition var3, boolean var4) {
- boolean var5 = var3.isStatic();
- boolean var6 = var3.isMethod();
- if (var3.isConstructor()) {
- return null;
- } else {
- FieldDefinition var7;
- for(var7 = ((ClassDefinition)this).getFirstField(); var7 != null && (var7.getAccessMethodTarget() != var3 || !var6 && var7.getType().getArgumentTypes().length != 0); var7 = var7.getNextField()) {
- }
-
- if (var7 != null) {
- if (!var4) {
- return var7;
- }
-
- FieldDefinition var8 = var7.getAccessUpdateField();
- if (var8 != null) {
- return var8;
- }
- } else if (var4) {
- var7 = this.getAccessField(var1, var2, var3, false);
- }
-
- int var9 = 0;
-
- while(true) {
- Identifier var24 = Identifier.lookup("access$" + var9);
- if (((ClassDefinition)this).getFirstMatch(var24) == null) {
- Type var10 = var3.getType();
- if (!var6) {
- if (!var4) {
- var10 = Type.tMethod(var10);
- } else {
- Type[] var11 = new Type[]{var10};
- var10 = Type.tMethod(Type.tVoid, var11);
- }
- }
-
- int var25 = var3.getWhere();
- Type[] var12 = var10.getArgumentTypes();
- IdentifierToken[] var13 = new IdentifierToken[var12.length];
-
- for(int var14 = 0; var14 < var13.length; ++var14) {
- var13[var14] = new IdentifierToken(var25, Identifier.lookup("$" + var14));
- }
-
- Expression[] var15 = new Expression[var13.length];
-
- for(int var16 = 0; var16 < var15.length; ++var16) {
- var15[var16] = new IdentifierExpression(var13[var16]);
- }
-
- ThisExpression var17 = null;
- if (!var5) {
- var17 = new ThisExpression(var25, this.getThisArgument());
- }
-
- Object var26;
- if (!var6) {
- var26 = new FieldExpression(var25, var17, var3);
- if (var4) {
- var26 = new AssignExpression(var25, (Expression)var26, var15[0]);
- }
- } else {
- var26 = new MethodExpression(var25, var17, var3, var15);
- }
-
- Object var18;
- if (var10.getReturnType().isType(11)) {
- var18 = new ExpressionStatement(var25, (Expression)var26);
- } else {
- var18 = new ReturnStatement(var25, (Expression)var26);
- }
-
- Statement[] var19 = new Statement[]{(Statement)var18};
- CompoundStatement var27 = new CompoundStatement(var25, var19);
- int var20 = 524304;
- if (var5) {
- var20 |= 8;
- }
-
- SourceField var21 = (SourceField)var1.makeFieldDefinition(var1, var25, this, (String)null, var20, var10, var24, var13, (IdentifierToken[])null, var27);
- ((FieldDefinition)var21).setAccessMethodTarget(var3);
- if (var4) {
- var7.setAccessUpdateField(var21);
- }
-
- try {
- var21.check(var1, var2, new Vset());
- } catch (ClassNotFound var23) {
- var1.error(var25, "class.not.found", var23.name, this);
- }
-
- return var21;
- }
-
- ++var9;
- }
- }
- }
-
- public void compile(OutputStream var1) throws InterruptedException, IOException {
- Environment var2 = this.toplevelEnv;
- Vector var3 = active;
- synchronized(var3){}
-
- try {
- while(active.contains(((ClassDefinition)this).getName())) {
- active.wait();
- }
-
- active.addElement(((ClassDefinition)this).getName());
- } catch (Throwable var28) {
- throw var28;
- }
-
- try {
- this.compileClass(var2, var1);
- } catch (ClassNotFound var26) {
- throw new CompilerError(var26);
- } finally {
- Vector var5 = active;
- synchronized(var5){}
-
- try {
- active.removeElement(((ClassDefinition)this).getName());
- active.notifyAll();
- } catch (Throwable var25) {
- throw var25;
- }
-
- }
-
- }
-
- protected void compileClass(Environment var1, OutputStream var2) throws IOException, ClassNotFound {
- Vector var3 = new Vector();
- Vector var4 = new Vector();
- Vector var5 = new Vector();
- CompilerField var6 = new CompilerField(new FieldDefinition(((ClassDefinition)this).getWhere(), this, 8, Type.tMethod(Type.tVoid), Constants.idClassInit, (IdentifierToken[])null, (Node)null), new Assembler());
- Context var7 = new Context((Context)null, var6.field);
-
- for(Object var8 = this; ((ClassDefinition)var8).isInnerClass(); var8 = ((ClassDefinition)var8).getOuterClass()) {
- var5.addElement(var8);
- }
-
- int var9 = var5.size();
- int var10 = var9;
-
- while(true) {
- --var10;
- if (var10 < 0) {
- int var11 = var9;
-
- while(true) {
- --var11;
- if (var11 < 0) {
- boolean var12 = ((ClassDefinition)this).isDeprecated();
- boolean var13 = ((ClassDefinition)this).isSynthetic();
-
- for(FieldDefinition var14 = ((ClassDefinition)this).getFirstField(); var14 != null; var14 = var14.getNextField()) {
- var12 |= var14.isDeprecated();
- var13 |= var14.isSynthetic();
-
- try {
- if (var14.isMethod()) {
- if (var14.isInitializer()) {
- if (var14.isStatic()) {
- ((SourceField)var14).code(var1, var6.asm);
- }
- } else {
- CompilerField var15 = new CompilerField(var14, new Assembler());
- ((SourceField)var14).code(var1, var15.asm);
- var4.addElement(var15);
- }
- } else if (var14.isInnerClass()) {
- var5.addElement(var14.getInnerClass());
- } else if (var14.isVariable()) {
- ((SourceField)var14).inline(var1);
- CompilerField var40 = new CompilerField(var14, (Assembler)null);
- var3.addElement(var40);
- if (var14.isStatic()) {
- var14.codeInit(var1, var7, var6.asm);
- }
- }
- } catch (CompilerError var38) {
- var38.printStackTrace();
- var1.error(var14, 0, "generic", var14.getClassDeclaration() + ":" + var14 + "@" + ((Throwable)var38).toString(), (Object)null, (Object)null);
- }
- }
-
- if (!var6.asm.empty()) {
- var6.asm.add(((ClassDefinition)this).getWhere(), 177, true);
- var4.addElement(var6);
- }
-
- if (((ClassDefinition)this).getError()) {
- return;
- } else {
- int var41 = 0;
- this.tab.put("Code");
- this.tab.put("ConstantValue");
- this.tab.put("LocalVariables");
- this.tab.put("SourceFile");
- ++var41;
- this.tab.put("Exceptions");
- if (!var1.optimize()) {
- this.tab.put("LineNumberTable");
- }
-
- if (var12) {
- this.tab.put("Deprecated");
- if (((ClassDefinition)this).isDeprecated()) {
- ++var41;
- }
- }
-
- if (var13) {
- this.tab.put("Synthetic");
- if (((ClassDefinition)this).isSynthetic()) {
- ++var41;
- }
- }
-
- if (var1.coverage()) {
- var41 += 2;
- this.tab.put("AbsoluteSourcePath");
- this.tab.put("TimeStamp");
- this.tab.put("CoverageTable");
- }
-
- if (var1.debug()) {
- this.tab.put("LocalVariableTable");
- }
-
- if (var5.size() > 0) {
- if (!var1.innerClasses()) {
- throw new CompilerError("compileClass");
- }
-
- this.tab.put("InnerClasses");
- ++var41;
- }
-
- String var16 = ((ClassFile)((ClassDefinition)this).getSource()).getName();
- this.tab.put(var16);
- String var17 = "";
- long var18 = 0L;
- if (var1.coverage()) {
- var17 = this.getAbsoluteName();
- var18 = System.currentTimeMillis();
- this.tab.put(var17);
- }
-
- this.tab.put(((ClassDefinition)this).getClassDeclaration());
- if (((ClassDefinition)this).getSuperClass() != null) {
- this.tab.put(((ClassDefinition)this).getSuperClass());
- }
-
- for(int var20 = 0; var20 < super.interfaces.length; ++var20) {
- this.tab.put(super.interfaces[var20]);
- }
-
- Enumeration var21 = var4.elements();
-
- while(var21.hasMoreElements()) {
- CompilerField var22 = (CompilerField)var21.nextElement();
-
- try {
- var22.asm.optimize(var1);
- var22.asm.collect(var1, var22.field, this.tab);
- this.tab.put(var22.name);
- this.tab.put(var22.sig);
- ClassDeclaration[] var23 = var22.field.getExceptions(var1);
-
- for(int var24 = 0; var24 < var23.length; ++var24) {
- this.tab.put(var23[var24]);
- }
- } catch (Exception var39) {
- ((Throwable)var39).printStackTrace();
- var1.error(var22.field, -1, "generic", var22.field.getName() + "@" + ((Throwable)var39).toString(), (Object)null, (Object)null);
- var22.asm.listing(System.out);
- }
- }
-
- Enumeration var43 = var3.elements();
-
- while(var43.hasMoreElements()) {
- CompilerField var44 = (CompilerField)var43.nextElement();
- this.tab.put(var44.name);
- this.tab.put(var44.sig);
- Object var46 = var44.field.getInitialValue();
- if (var46 != null) {
- this.tab.put(var46 instanceof String ? new StringExpression(var44.field.getWhere(), (String)var46) : var46);
- }
- }
-
- Enumeration var45 = var5.elements();
-
- while(var45.hasMoreElements()) {
- ClassDefinition var47 = (ClassDefinition)var45.nextElement();
- ClassDefinition var25 = var47.getOuterClass();
- String var26 = var47.getLocalName().toString();
- this.tab.put(var47.getClassDeclaration());
- this.tab.put(var25.getClassDeclaration());
- this.tab.put(var26);
- }
-
- DataOutputStream var48 = new DataOutputStream(var2);
- var48.writeInt(-889275714);
- var48.writeShort(3);
- var48.writeShort(45);
- this.tab.write(var1, var48);
- byte var49 = 32;
- if (var1.optimize()) {
- var49 = 0;
- }
-
- if (((ClassDefinition)this).isInterface()) {
- var49 = 0;
- }
-
- var48.writeShort((((ClassDefinition)this).getModifiers() | var49) & 1585);
- var48.writeShort(this.tab.index(((ClassDefinition)this).getClassDeclaration()));
- var48.writeShort(((ClassDefinition)this).getSuperClass() != null ? this.tab.index(((ClassDefinition)this).getSuperClass()) : 0);
- var48.writeShort(super.interfaces.length);
-
- for(int var50 = 0; var50 < super.interfaces.length; ++var50) {
- var48.writeShort(this.tab.index(super.interfaces[var50]));
- }
-
- ByteArrayOutputStream var27 = new ByteArrayOutputStream(256);
- ByteArrayOutputStream var28 = new ByteArrayOutputStream(256);
- DataOutputStream var29 = new DataOutputStream(var27);
- var48.writeShort(var3.size());
- Enumeration var30 = var3.elements();
-
- while(var30.hasMoreElements()) {
- CompilerField var31 = (CompilerField)var30.nextElement();
- Object var32 = var31.field.getInitialValue();
- var48.writeShort(var31.field.getModifiers() & 223);
- var48.writeShort(this.tab.index(var31.name));
- var48.writeShort(this.tab.index(var31.sig));
- int var33 = var32 != null ? 1 : 0;
- boolean var34 = var31.field.isDeprecated();
- boolean var35 = var31.field.isSynthetic();
- var33 += (var34 ? 1 : 0) + (var35 ? 1 : 0);
- var48.writeShort(var33);
- if (var32 != null) {
- var48.writeShort(this.tab.index("ConstantValue"));
- var48.writeInt(2);
- var48.writeShort(this.tab.index(var32 instanceof String ? new StringExpression(var31.field.getWhere(), (String)var32) : var32));
- }
-
- if (var34) {
- var48.writeShort(this.tab.index("Deprecated"));
- var48.writeInt(0);
- }
-
- if (var35) {
- var48.writeShort(this.tab.index("Synthetic"));
- var48.writeInt(0);
- }
- }
-
- var48.writeShort(var4.size());
- Enumeration var51 = var4.elements();
-
- while(var51.hasMoreElements()) {
- CompilerField var52 = (CompilerField)var51.nextElement();
- var48.writeShort(var52.field.getModifiers() & 1343);
- var48.writeShort(this.tab.index(var52.name));
- var48.writeShort(this.tab.index(var52.sig));
- ClassDeclaration[] var56 = var52.field.getExceptions(var1);
- int var58 = var56.length > 0 ? 1 : 0;
- boolean var61 = var52.field.isDeprecated();
- boolean var36 = var52.field.isSynthetic();
- var58 += (var61 ? 1 : 0) + (var36 ? 1 : 0);
- if (!var52.asm.empty()) {
- var48.writeShort(var58 + 1);
- var52.asm.write(var1, var29, var52.field, this.tab);
- int var37 = 0;
- if (!var1.optimize()) {
- ++var37;
- }
-
- if (var1.coverage()) {
- ++var37;
- }
-
- if (var1.debug()) {
- ++var37;
- }
-
- var29.writeShort(var37);
- if (!var1.optimize()) {
- var52.asm.writeLineNumberTable(var1, new DataOutputStream(var28), this.tab);
- var29.writeShort(this.tab.index("LineNumberTable"));
- var29.writeInt(var28.size());
- var28.writeTo(var27);
- var28.reset();
- }
-
- if (var1.coverage()) {
- var52.asm.writeCoverageTable(var1, this, new DataOutputStream(var28), this.tab, var52.field.getWhere());
- var29.writeShort(this.tab.index("CoverageTable"));
- var29.writeInt(var28.size());
- var28.writeTo(var27);
- var28.reset();
- }
-
- if (var1.debug()) {
- var52.asm.writeLocalVariableTable(var1, var52.field, new DataOutputStream(var28), this.tab);
- var29.writeShort(this.tab.index("LocalVariableTable"));
- var29.writeInt(var28.size());
- var28.writeTo(var27);
- var28.reset();
- }
-
- var48.writeShort(this.tab.index("Code"));
- var48.writeInt(var27.size());
- var27.writeTo(var48);
- var27.reset();
- } else {
- var48.writeShort(var58);
- }
-
- if (var56.length > 0) {
- var48.writeShort(this.tab.index("Exceptions"));
- var48.writeInt(2 + var56.length * 2);
- var48.writeShort(var56.length);
-
- for(int var64 = 0; var64 < var56.length; ++var64) {
- var48.writeShort(this.tab.index(var56[var64]));
- }
- }
-
- if (var61) {
- var48.writeShort(this.tab.index("Deprecated"));
- var48.writeInt(0);
- }
-
- if (var36) {
- var48.writeShort(this.tab.index("Synthetic"));
- var48.writeInt(0);
- }
- }
-
- var48.writeShort(var41);
- var48.writeShort(this.tab.index("SourceFile"));
- var48.writeInt(2);
- var48.writeShort(this.tab.index(var16));
- if (((ClassDefinition)this).isDeprecated()) {
- var48.writeShort(this.tab.index("Deprecated"));
- var48.writeInt(0);
- }
-
- if (((ClassDefinition)this).isSynthetic()) {
- var48.writeShort(this.tab.index("Synthetic"));
- var48.writeInt(0);
- }
-
- if (var1.coverage()) {
- var48.writeShort(this.tab.index("AbsoluteSourcePath"));
- var48.writeInt(2);
- var48.writeShort(this.tab.index(var17));
- var48.writeShort(this.tab.index("TimeStamp"));
- var48.writeInt(8);
- var48.writeLong(var18);
- }
-
- if (var5.size() > 0) {
- var48.writeShort(this.tab.index("InnerClasses"));
- var48.writeInt(2 + 8 * var5.size());
- var48.writeShort(var5.size());
- Enumeration var53 = var5.elements();
-
- while(var53.hasMoreElements()) {
- ClassDefinition var57 = (ClassDefinition)var53.nextElement();
- ClassDefinition var60 = var57.getOuterClass();
- String var62 = var57.getLocalName().toString();
- int var63 = var57.getInnerClassField().getModifiers();
- var48.writeShort(this.tab.index(var57.getClassDeclaration()));
- var48.writeShort(this.tab.index(var60.getClassDeclaration()));
- var48.writeShort(this.tab.index(var62));
- var48.writeShort(var63 & 198207);
- }
- }
-
- var48.flush();
- this.tab = null;
- if (var1.covdata()) {
- Assembler var54 = new Assembler();
- var54.GenVecJCov(var1, this, var18);
- }
-
- return;
- }
- }
-
- var5.removeElementAt(var11);
- }
- }
-
- var5.addElement(var5.elementAt(var10));
- }
- }
-
- public void printClassDependencies(Environment var1) {
- if (this.toplevelEnv.print_dependencies()) {
- String var2 = ((ClassFile)((ClassDefinition)this).getSource()).getAbsoluteName();
- String var3 = ((ClassDefinition)this).getName().toString();
- int var4 = ((ClassDefinition)this).getWhere() >> 18;
- int var5 = this.getEndPosition() >> 18;
- System.out.println("CLASS:" + var2 + "," + var4 + "," + var5 + "," + var3);
- Enumeration var6 = this.deps.elements();
-
- while(var6.hasMoreElements()) {
- ClassDeclaration var7 = (ClassDeclaration)var6.nextElement();
- var1.output("CLDEP:" + var3 + "," + var7.getName());
- }
- }
-
- }
- }
-