home *** CD-ROM | disk | FTP | other *** search
- package sun.tools.javac;
-
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.Enumeration;
- import java.util.Vector;
- import sun.tools.java.ClassDefinition;
- 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.Parser;
- import sun.tools.java.Type;
- import sun.tools.tree.Node;
-
- public class BatchParser extends Parser {
- protected Identifier pkg;
- protected Imports imports;
- protected Vector classes;
- protected SourceClass sourceClass;
- protected Environment toplevelEnv;
-
- public BatchParser(Environment var1, InputStream var2) throws IOException {
- super(var1, var2);
- this.imports = new Imports(var1);
- this.classes = new Vector();
- this.toplevelEnv = this.imports.newEnvironment(var1);
- }
-
- public void packageDeclaration(int var1, IdentifierToken var2) {
- Identifier var3 = var2.getName();
- if (this.pkg == null) {
- this.imports.setCurrentPackage(this.pkg = var3);
- } else {
- super.env.error(var1, "package.repeated");
- }
- }
-
- public void importClass(int var1, IdentifierToken var2) {
- this.imports.addClass(var2);
- }
-
- public void importPackage(int var1, IdentifierToken var2) {
- this.imports.addPackage(var2);
- }
-
- public ClassDefinition beginClass(int var1, String var2, int var3, IdentifierToken var4, IdentifierToken var5, IdentifierToken[] var6) {
- SourceClass var7 = this.sourceClass;
- if (var7 == null && this.pkg != null) {
- var4 = new IdentifierToken(var4.getWhere(), Identifier.lookup(this.pkg, var4.getName()));
- }
-
- if ((var3 & 65536) != 0) {
- var3 |= 18;
- }
-
- if ((var3 & 131072) != 0) {
- var3 |= 2;
- }
-
- if (var7 != null && ((ClassDefinition)var7).isInterface()) {
- if ((var3 & 6) == 0) {
- var3 |= 1;
- }
-
- var3 |= 8;
- }
-
- this.sourceClass = (SourceClass)this.toplevelEnv.makeClassDefinition(this.toplevelEnv, var1, var4, var2, var3, var5, var6, var7);
- this.sourceClass.getClassDeclaration().setDefinition(this.sourceClass, 4);
- super.env = new Environment(this.toplevelEnv, this.sourceClass);
- Enumeration var8 = this.classes.elements();
-
- while(var8.hasMoreElements()) {
- ClassDefinition var9 = (ClassDefinition)var8.nextElement();
- var9.addDependency(this.sourceClass.getClassDeclaration());
- this.sourceClass.addDependency(var9.getClassDeclaration());
- }
-
- this.classes.addElement(this.sourceClass);
- return this.sourceClass;
- }
-
- public ClassDefinition getCurrentClass() {
- return this.sourceClass;
- }
-
- public void endClass(int var1, ClassDefinition var2) {
- this.sourceClass.setEndPosition(var1);
- SourceClass var3 = (SourceClass)this.sourceClass.getOuterClass();
- this.sourceClass = var3;
- super.env = this.toplevelEnv;
- if (this.sourceClass != null) {
- super.env = new Environment(super.env, this.sourceClass);
- }
-
- }
-
- public void defineField(int var1, ClassDefinition var2, String var3, int var4, Type var5, IdentifierToken var6, IdentifierToken[] var7, IdentifierToken[] var8, Node var9) {
- Identifier var10 = var6.getName();
- if (this.sourceClass.isInterface()) {
- if ((var4 & 6) == 0) {
- var4 |= 1;
- }
-
- if (var5.isType(12)) {
- var4 |= 1024;
- } else {
- var4 |= 24;
- }
- }
-
- if (var10.equals(Constants.idInit)) {
- Type var11 = var5.getReturnType();
- Identifier var12 = !var11.isType(10) ? Constants.idStar : var11.getClassName();
- Identifier var13 = this.sourceClass.getLocalName();
- if (var13.equals(var12)) {
- var5 = Type.tMethod(Type.tVoid, var5.getArgumentTypes());
- } else {
- if (!var13.equals(var12.getFlatName().getName())) {
- if (!var12.isQualified() && !var12.equals(Constants.idStar)) {
- super.env.error(var1, "invalid.method.decl");
- return;
- }
-
- super.env.error(var1, "invalid.method.decl.name");
- return;
- }
-
- var5 = Type.tMethod(Type.tVoid, var5.getArgumentTypes());
- super.env.error(var1, "invalid.method.decl.qual");
- }
- }
-
- if (var7 == null && var5.isType(12)) {
- var7 = new IdentifierToken[0];
- }
-
- if (var8 == null && var5.isType(12)) {
- var8 = new IdentifierToken[0];
- }
-
- FieldDefinition var14 = super.env.makeFieldDefinition(super.env, var1, this.sourceClass, var3, var4, var5, var10, var7, var8, var9);
- if (super.env.dump()) {
- var14.print(System.out);
- }
-
- }
- }
-