X-Git-Url: http://git.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;
+	}		
+}
 }