avoid ClassCastException
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / compiler / SourceElementParser.java
index b689763..2f98945 100644 (file)
@@ -12,10 +12,13 @@ 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;
 import net.sourceforge.phpdt.internal.compiler.env.ISourceType;
+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;
@@ -99,14 +102,14 @@ public class LocalDeclarationVisitor extends AbstractSyntaxTreeVisitorAdapter {
 
 public SourceElementParser(
        final ISourceElementRequestor requestor, 
-       IProblemFactory problemFactory) {
-//     CompilerOptions options) {
+       IProblemFactory problemFactory,
+       CompilerOptions options) {
        // we want to notify all syntax error with the acceptProblem API
        // To do so, we define the record method of the ProblemReporter
        super(
        new ProblemReporter(
                DefaultErrorHandlingPolicies.exitAfterAllProblems(),
-//             options, 
+               options, 
                problemFactory) {
                public void record(IProblem problem, CompilationResult unitResult, ReferenceContext referenceContext) {
                        unitResult.record(problem, referenceContext);
@@ -119,7 +122,7 @@ public SourceElementParser(
        typeNames = new char[4][];
        superTypeNames = new char[4][];
        nestedTypeIndex = 0;
-//     this.options = options;
+       this.options = options;
 }
 
 /** @deprecated use SourceElementParser(ISourceElementRequestor, IProblemFactory, CompilerOptions) */
@@ -1071,36 +1074,41 @@ public void parseCompilationUnit (
 //             diet = old;
        }
 }
-public void parseCompilationUnit(
-       ICompilationUnit unit, 
-       boolean needReferenceInfo) {
-//     boolean old = diet;
-//     if (needReferenceInfo) {
-//             unknownRefs = new NameReference[10];
-//             unknownRefsCounter = 0;
-//     }
+public CompilationUnitDeclaration parseCompilationUnit(
+               ICompilationUnit unit, 
+               boolean fullParse) {
+                       
+//             boolean old = diet;
+//             if (fullParse) {
+//                     unknownRefs = new NameReference[10];
+//                     unknownRefsCounter = 0;
+//             }
 
-       try {
-//             diet = true;
-               reportReferenceInfo = needReferenceInfo;
-               CompilationResult compilationUnitResult = new CompilationResult(unit, 0, 0, 10); //this.options.maxProblemsPerUnit);
-               CompilationUnitDeclaration parsedUnit = parse(unit, compilationUnitResult, false);
-               if (scanner.recordLineSeparator) {
-                       requestor.acceptLineSeparatorPositions(scanner.getLineEnds());
+               try {
+//                     diet = true;
+                       this.reportReferenceInfo = fullParse;
+                       CompilationResult compilationUnitResult = new CompilationResult(unit, 0, 0, this.options.maxProblemsPerUnit);
+                       CompilationUnitDeclaration parsedUnit = parse(unit, compilationUnitResult, false);
+                       if (scanner.recordLineSeparator) {
+                               requestor.acceptLineSeparatorPositions(scanner.getLineEnds());
+                       }
+                       int initialStart = this.scanner.initialPosition;
+                       int initialEnd = this.scanner.eofPosition;
+//                     if (this.localDeclarationVisitor != null || fullParse){
+//                             diet = false;
+//                             this.getMethodBodies(parsedUnit);
+//                     }
+                       this.scanner.resetTo(initialStart, initialEnd);
+                       notifySourceElementRequestor(parsedUnit);
+                       return parsedUnit;
+               } catch (AbortCompilation e) {
+                       // ignore this exception
+               } finally {
+//                     diet = old;
                }
-               int initialStart = this.scanner.initialPosition;
-               int initialEnd = this.scanner.eofPosition;
-//             if (this.localDeclarationVisitor != null || needReferenceInfo){
-//                     diet = false;
-//                     this.getMethodBodies(parsedUnit);
-//             }
-               this.scanner.resetTo(initialStart, initialEnd);
-               notifySourceElementRequestor(parsedUnit);
-       } catch (AbortCompilation e) {
-       } finally {
-//             diet = old;
+               return null;
        }
-}
+
 //public void parseTypeMemberDeclarations(
 //     ISourceType sourceType, 
 //     ICompilationUnit sourceUnit,