avoid exception during creation of identifier list
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / phpeditor / PHPEditor.java
index d0393cf..5dcf343 100644 (file)
@@ -4980,8 +4980,11 @@ public abstract class PHPEditor extends AbstractDecoratedTextEditor implements I
 
                List segmentation = new ArrayList();
                for (int i = 0; i < linePartitioning.length; i++) {
-                       if (IPHPPartitions.PHP_STRING_DQ.equals(linePartitioning[i].getType()))
+                       if (IPHPPartitions.PHP_STRING_DQ.equals(linePartitioning[i].getType())) {
                                segmentation.add(linePartitioning[i]);
+                       } else if (IPHPPartitions.PHP_STRING_HEREDOC.equals(linePartitioning[i].getType())) {
+                               segmentation.add(linePartitioning[i]);
+                       }
                }
 
                if (segmentation.size() == 0)
@@ -5581,9 +5584,9 @@ public abstract class PHPEditor extends AbstractDecoratedTextEditor implements I
         * @since 3.0
         */
        protected void updateOccurrenceAnnotations(ITextSelection selection) {// ,
-                                                                                                                                                                                                                                                                                               // CompilationUnit
-                                                                                                                                                                                                                                                                                               // astRoot)
-                                                                                                                                                                                                                                                                                               // {
+               // CompilationUnit
+               // astRoot)
+               // {
 
                if (fOccurrencesFinderJob != null)
                        fOccurrencesFinderJob.cancel();
@@ -5612,7 +5615,7 @@ public abstract class PHPEditor extends AbstractDecoratedTextEditor implements I
                        fMarkOccurrenceModificationStamp = currentModificationStamp;
                }
 
-               if (fMarkOccurrenceTargetRegion == null) {
+               if (fMarkOccurrenceTargetRegion == null || fMarkOccurrenceTargetRegion.getLength() == 0) {
                        return;
                }
 
@@ -5625,30 +5628,32 @@ public abstract class PHPEditor extends AbstractDecoratedTextEditor implements I
                                Scanner fScanner = new Scanner();
                                fScanner.setSource(document.get().toCharArray());
                                fScanner.setPHPMode(false);
+                               String wordStr;
                                char[] word;
 
-                               word = document.get(fMarkOccurrenceTargetRegion.getOffset(), fMarkOccurrenceTargetRegion.getLength()).toCharArray();
-
-                               int fToken = ITerminalSymbols.TokenNameEOF;
-                               try {
-                                       fToken = fScanner.getNextToken();
-                                       while (fToken != ITerminalSymbols.TokenNameEOF) { // && fToken !=
-                                               // TokenNameERROR) {
-                                               if (fToken == ITerminalSymbols.TokenNameVariable || fToken == ITerminalSymbols.TokenNameIdentifier) {
-                                                       // global variable
-                                                       if (fScanner.equalsCurrentTokenSource(word)) {
-                                                               matches.add(new Region(fScanner.getCurrentTokenStartPosition(), fScanner.getCurrentTokenEndPosition()
-                                                                               - fScanner.getCurrentTokenStartPosition() + 1));
+                               wordStr = document.get(fMarkOccurrenceTargetRegion.getOffset(), fMarkOccurrenceTargetRegion.getLength());
+                               if (wordStr != null) {
+                                       word = wordStr.toCharArray();
+                                       int fToken = ITerminalSymbols.TokenNameEOF;
+                                       try {
+                                               fToken = fScanner.getNextToken();
+                                               while (fToken != ITerminalSymbols.TokenNameEOF) { // && fToken !=
+                                                       // TokenNameERROR) {
+                                                       if (fToken == ITerminalSymbols.TokenNameVariable || fToken == ITerminalSymbols.TokenNameIdentifier) {
+                                                               // global variable
+                                                               if (fScanner.equalsCurrentTokenSource(word)) {
+                                                                       matches.add(new Region(fScanner.getCurrentTokenStartPosition(), fScanner.getCurrentTokenEndPosition()
+                                                                                       - fScanner.getCurrentTokenStartPosition() + 1));
+                                                               }
                                                        }
+                                                       fToken = fScanner.getNextToken();
                                                }
-                                               fToken = fScanner.getNextToken();
+                                       } catch (InvalidInputException e) {
+                                               // ignore errors
+                                       } catch (SyntaxError e) {
+                                               // ignore errors
                                        }
-                               } catch (InvalidInputException e) {
-                                       // ignore errors
-                               } catch (SyntaxError e) {
-                                       // ignore errors
                                }
-
                        } catch (BadLocationException e1) {
                                // ignore errors
                        } catch (Exception e) {
@@ -5683,9 +5688,9 @@ public abstract class PHPEditor extends AbstractDecoratedTextEditor implements I
 
                fPostSelectionListenerWithAST = new ISelectionListenerWithAST() {
                        public void selectionChanged(IEditorPart part, ITextSelection selection) { // ,
-                                                                                                                                                                                                                                                                                                                                       // CompilationUnit
-                                                                                                                                                                                                                                                                                                                                       // astRoot)
-                                                                                                                                                                                                                                                                                                                                       // {
+                               // CompilationUnit
+                               // astRoot)
+                               // {
                                updateOccurrenceAnnotations(selection);// , astRoot);
                        }
                };