X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/SourceElementParser.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/SourceElementParser.java index 2f98945..b66cb71 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/SourceElementParser.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/SourceElementParser.java @@ -12,8 +12,6 @@ package net.sourceforge.phpdt.internal.compiler; import java.util.ArrayList; -import net.sourceforge.phpdt.internal.compiler.CompilationResult; - import net.sourceforge.phpdt.core.compiler.CharOperation; import net.sourceforge.phpdt.core.compiler.IProblem; import net.sourceforge.phpdt.internal.compiler.env.ICompilationUnit; @@ -22,9 +20,9 @@ import net.sourceforge.phpdt.internal.compiler.impl.CompilerOptions; import net.sourceforge.phpdt.internal.compiler.impl.ReferenceContext; import net.sourceforge.phpdt.internal.compiler.lookup.BlockScope; import net.sourceforge.phpdt.internal.compiler.lookup.ClassScope; -import net.sourceforge.phpdt.internal.compiler.parser.UnitParser; import net.sourceforge.phpdt.internal.compiler.problem.AbortCompilation; import net.sourceforge.phpdt.internal.compiler.problem.ProblemReporter; +import net.sourceforge.phpdt.internal.core.util.CommentRecorderParser; import net.sourceforge.phpeclipse.internal.compiler.ast.AbstractMethodDeclaration; import net.sourceforge.phpeclipse.internal.compiler.ast.AnonymousLocalTypeDeclaration; import net.sourceforge.phpeclipse.internal.compiler.ast.Argument; @@ -62,7 +60,7 @@ import net.sourceforge.phpeclipse.internal.compiler.ast.TypeReference; * Any (parsing) problem encountered is also provided. */ -public class SourceElementParser extends UnitParser { +public class SourceElementParser extends CommentRecorderParser {//extends UnitParser { ISourceElementRequestor requestor; int fieldCount; @@ -70,7 +68,7 @@ public class SourceElementParser extends UnitParser { int lastFieldEndPosition; ISourceType sourceType; boolean reportReferenceInfo; - char[][] typeNames; + char[][] typeNames; char[][] superTypeNames; int nestedTypeIndex; static final char[] JAVA_LANG_OBJECT = "java.lang.Object".toCharArray(); //$NON-NLS-1$ @@ -815,18 +813,18 @@ public void notifySourceElementRequestor(AbstractMethodDeclaration methodDeclara requestor.exitMethod(methodDeclaration.declarationSourceEnd); } } -///* -//* Update the bodyStart of the corresponding parse node -//*/ -//public void notifySourceElementRequestor(FieldDeclaration fieldDeclaration) { -// -// // range check -// boolean isInRange = -// scanner.initialPosition <= fieldDeclaration.declarationSourceStart -// && scanner.eofPosition >= fieldDeclaration.declarationSourceEnd; -// -// if (fieldDeclaration.isField()) { -// int fieldEndPosition = fieldDeclaration.declarationSourceEnd; +/* +* Update the bodyStart of the corresponding parse node +*/ +public void notifySourceElementRequestor(FieldDeclaration fieldDeclaration) { + + // range check + boolean isInRange = + scanner.initialPosition <= fieldDeclaration.declarationSourceStart + && scanner.eofPosition >= fieldDeclaration.declarationSourceEnd; + + if (fieldDeclaration.isField()) { + int fieldEndPosition = fieldDeclaration.declarationSourceEnd; // if (fieldDeclaration instanceof SourceFieldDeclaration) { // fieldEndPosition = ((SourceFieldDeclaration) fieldDeclaration).fieldEndPosition; // if (fieldEndPosition == 0) { @@ -834,19 +832,19 @@ public void notifySourceElementRequestor(AbstractMethodDeclaration methodDeclara // fieldEndPosition = fieldDeclaration.declarationSourceEnd; // } // } -// if (isInRange) { -// int modifiers = fieldDeclaration.modifiers; -// boolean deprecated = (modifiers & AccDeprecated) != 0; // remember deprecation so as to not lose it below -// requestor.enterField( -// fieldDeclaration.declarationSourceStart, -// deprecated ? (modifiers & AccJustFlag) | AccDeprecated : modifiers & AccJustFlag, -// returnTypeName(fieldDeclaration.type), -// fieldDeclaration.name, -// fieldDeclaration.sourceStart, -// fieldDeclaration.sourceEnd); -// } + if (isInRange) { + int modifiers = fieldDeclaration.modifiers; + boolean deprecated = (modifiers & AccDeprecated) != 0; // remember deprecation so as to not lose it below + requestor.enterField( + fieldDeclaration.declarationSourceStart, + deprecated ? (modifiers & AccJustFlag) | AccDeprecated : modifiers & AccJustFlag, + returnTypeName(fieldDeclaration.type), + fieldDeclaration.name, + fieldDeclaration.sourceStart, + fieldDeclaration.sourceEnd); + } // this.visitIfNeeded(fieldDeclaration); -// if (isInRange){ + if (isInRange){ // requestor.exitField( // // filter out initializations that are not a constant (simple check) // (fieldDeclaration.initialization == null @@ -862,9 +860,14 @@ public void notifySourceElementRequestor(AbstractMethodDeclaration methodDeclara // fieldDeclaration.initialization.sourceStart, // fieldEndPosition, // fieldDeclaration.declarationSourceEnd); -// } -// -// } else { + requestor.exitField( + // filter out initializations that are not a constant (simple check) + -1, + fieldEndPosition, + fieldDeclaration.declarationSourceEnd); + } + + } else { // if (isInRange){ // requestor.enterInitializer( // fieldDeclaration.declarationSourceStart, @@ -874,8 +877,8 @@ public void notifySourceElementRequestor(AbstractMethodDeclaration methodDeclara // if (isInRange){ // requestor.exitInitializer(fieldDeclaration.declarationSourceEnd); // } -// } -//} + } +} //public void notifySourceElementRequestor( // ImportReference importReference, // boolean isPackage) { @@ -1021,7 +1024,7 @@ public void notifySourceElementRequestor(TypeDeclaration typeDeclaration, boolea switch (nextDeclarationType) { case 0 : fieldIndex++; -// notifySourceElementRequestor(nextFieldDeclaration); + notifySourceElementRequestor(nextFieldDeclaration); break; case 1 : methodIndex++; @@ -1297,5 +1300,19 @@ private void visitIfNeeded(AbstractMethodDeclaration method) { // if (compilationUnit == null) return; // super.reportSyntaxError(act, currentKind,stateStackTop); //} - +protected CompilationUnitDeclaration endParse(int act) { +// if (sourceType != null) { +// if (sourceType.isInterface()) { +// consumeInterfaceDeclaration(); +// } else { +// consumeClassDeclaration(); +// } +// } + if (compilationUnit != null) { + CompilationUnitDeclaration result = super.endParse(act); + return result; + } else { + return null; + } +} }