a bug fixed in the switch labels parsing
[phpeclipse.git] / net.sourceforge.phpeclipse / src / test / PHPParser.java
index 9012909..07c6773 100644 (file)
@@ -518,8 +518,8 @@ public final class PHPParser extends PHPParserSuperclass implements PHPParserCon
       } catch (ParseException e) {
     errorMessage = "'?>' expected";
     errorLevel   = ERROR;
-    errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
-    errorEnd   = SimpleCharStream.getPosition() + 1;
+    errorStart = e.currentToken.sourceStart;
+    errorEnd   = e.currentToken.sourceEnd;
     processParseExceptionDebug(e);
       }
       break;
@@ -686,8 +686,8 @@ Token token;
     } catch (ParseException e) {
     errorMessage = "unexpected token : '"+ e.currentToken.next.image + "'. '{' expected";
     errorLevel   = ERROR;
-    errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
-    errorEnd   = SimpleCharStream.getPosition() + 1;
+    errorStart = e.currentToken.sourceStart;
+    errorEnd   = e.currentToken.sourceEnd;
     processParseExceptionDebug(e);
     }
     label_3:
@@ -709,8 +709,8 @@ Token token;
     } catch (ParseException e) {
     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. 'var', 'function' or '}' expected";
     errorLevel   = ERROR;
-    errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
-    errorEnd   = SimpleCharStream.getPosition() + 1;
+    errorStart = e.currentToken.sourceStart;
+    errorEnd   = e.currentToken.sourceEnd;
     processParseExceptionDebug(e);
     {if (true) return PHPParser.token.sourceEnd;}
     }
@@ -754,7 +754,6 @@ Token token;
     token = jj_consume_token(VAR);
     variableDeclaration = VariableDeclaratorNoSuffix();
     arrayList.add(variableDeclaration);
-    outlineInfo.addVariable(variableDeclaration.name());
     pos = variableDeclaration.sourceEnd;
     label_4:
     while (true) {
@@ -917,8 +916,8 @@ Token token;
     } catch (ParseException e) {
     errorMessage = "'$' expected for variable identifier";
     errorLevel   = ERROR;
-    errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
-    errorEnd   = SimpleCharStream.getPosition() + 1;
+    errorStart = e.currentToken.sourceStart;
+    errorEnd   = e.currentToken.sourceEnd;
     {if (true) throw e;}
     }
     throw new Error("Missing return statement in function");
@@ -954,6 +953,7 @@ Token token;
       break;
     case IDENTIFIER:
       token = jj_consume_token(IDENTIFIER);
+   outlineInfo.addVariable("$" + token.image);
    {if (true) return new Variable(token.image,token.sourceStart,token.sourceEnd);}
       break;
     default:
@@ -1125,8 +1125,8 @@ final Expression expr,expr2;
     if (errorMessage != null)  {if (true) throw e;}
     errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', function identifier expected";
     errorLevel   = ERROR;
-    errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
-    errorEnd   = SimpleCharStream.getPosition() + 1;
+    errorStart = e.currentToken.sourceStart;
+    errorEnd   = e.currentToken.sourceEnd;
     {if (true) throw e;}
     }
    currentSegment = functionDeclaration;
@@ -1145,7 +1145,7 @@ final Expression expr,expr2;
   static final public MethodDeclaration MethodDeclarator(final int start) throws ParseException {
   Token identifier = null;
   Token reference = null;
-  final Hashtable formalParameters = new Hashtable();
+  final ArrayList formalParameters = new ArrayList();
   String identifierChar = SYNTAX_ERROR_CHAR;
   int end = start;
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -1197,7 +1197,7 @@ final Expression expr,expr2;
  * FormalParameters follows method identifier.
  * (FormalParameter())
  */
-  static final public int FormalParameters(final Hashtable parameters) throws ParseException {
+  static final public int FormalParameters(final ArrayList parameters) throws ParseException {
   VariableDeclaration var;
   final Token token;
   Token tok = PHPParser.token;
@@ -1216,7 +1216,7 @@ final Expression expr,expr2;
     case BIT_AND:
     case DOLLAR:
       var = FormalParameter();
-     parameters.put(var.name(),var);end = var.sourceEnd;
+     parameters.add(var);end = var.sourceEnd;
       label_7:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -1229,7 +1229,7 @@ final Expression expr,expr2;
         }
         jj_consume_token(COMMA);
         var = FormalParameter();
-       parameters.put(var.name(),var);end = var.sourceEnd;
+       parameters.add(var);end = var.sourceEnd;
       }
       break;
     default:
@@ -1266,6 +1266,7 @@ final Expression expr,expr2;
       ;
     }
     variableDeclaration = VariableDeclaratorNoSuffix();
+    outlineInfo.addVariable("$"+variableDeclaration.name());
     if (token != null) {
       variableDeclaration.setReference(true);
     }
@@ -3106,8 +3107,8 @@ Token token;
     } catch (ParseException e) {
     errorMessage = "unexpected end of file , '<?php' expected";
     errorLevel   = ERROR;
-    errorStart   = SimpleCharStream.getPosition();
-    errorEnd     = SimpleCharStream.getPosition();
+    errorStart = e.currentToken.sourceStart;
+    errorEnd   = e.currentToken.sourceEnd;
     {if (true) throw e;}
     }
   nbNodes    = nodePtr - startIndex;
@@ -4004,6 +4005,7 @@ Token token;
   Statement statement;
   final ArrayList stmts = new ArrayList();
   final Token token = PHPParser.token;
+  final int start = PHPParser.token.next.sourceStart;
     expr = SwitchLabel();
     label_31:
     while (true) {
@@ -4122,7 +4124,8 @@ Token token;
     final Statement[] stmtsArray = new Statement[listSize];
     stmts.toArray(stmtsArray);
     if (expr == null) {//it's a default
-      {if (true) return new DefaultCase(stmtsArray,token.sourceStart,stmtsArray[listSize-1].sourceEnd);}
+      final int end = PHPParser.token.next.sourceStart;
+      {if (true) return new DefaultCase(stmtsArray,start,end);}
     }
     if (listSize != 0) {
       {if (true) return new Case(expr,stmtsArray,expr.sourceStart,stmtsArray[listSize-1].sourceEnd);}
@@ -4429,8 +4432,8 @@ Token token;
       } catch (ParseException e) {
     errorMessage = "'endif' expected";
     errorLevel   = ERROR;
-    errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
-    errorEnd   = SimpleCharStream.getPosition() + 1;
+    errorStart = e.currentToken.sourceStart;
+    errorEnd   = e.currentToken.sourceEnd;
     {if (true) throw e;}
       }
       try {
@@ -4438,8 +4441,8 @@ Token token;
       } catch (ParseException e) {
     errorMessage = "';' expected after 'endif' keyword";
     errorLevel   = ERROR;
-    errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
-    errorEnd   = SimpleCharStream.getPosition() + 1;
+    errorStart = e.currentToken.sourceStart;
+    errorEnd   = e.currentToken.sourceEnd;
     {if (true) throw e;}
       }
     elseIfs = new ElseIf[elseIfList.size()];
@@ -4582,8 +4585,8 @@ Token token;
       }
       errorMessage = "unexpected token '"+e.currentToken.next.image+"', a statement was expected";
       errorLevel   = ERROR;
-      errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
-      errorEnd   = SimpleCharStream.getPosition() + 1;
+      errorStart = e.currentToken.sourceStart;
+      errorEnd   = e.currentToken.sourceEnd;
       {if (true) throw e;}
         }
         break;
@@ -4948,8 +4951,8 @@ Token token;
       } catch (ParseException e) {
     errorMessage = "'endwhile' expected";
     errorLevel   = ERROR;
-    errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
-    errorEnd   = SimpleCharStream.getPosition() + 1;
+    errorStart = e.currentToken.sourceStart;
+    errorEnd   = e.currentToken.sourceEnd;
     {if (true) throw e;}
       }
       try {
@@ -4960,8 +4963,8 @@ Token token;
       } catch (ParseException e) {
     errorMessage = "';' expected after 'endwhile' keyword";
     errorLevel   = ERROR;
-    errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
-    errorEnd   = SimpleCharStream.getPosition() + 1;
+    errorStart = e.currentToken.sourceStart;
+    errorEnd   = e.currentToken.sourceEnd;
     {if (true) throw e;}
       }
       break;
@@ -5058,8 +5061,8 @@ Token token;
     } catch (ParseException e) {
     errorMessage = "'(' expected after 'foreach' keyword";
     errorLevel   = ERROR;
-    errorStart = foreachToken.sourceEnd+1;
-    errorEnd   = foreachToken.sourceEnd+1;
+    errorStart = e.currentToken.sourceStart;
+    errorEnd   = e.currentToken.sourceEnd;
     processParseExceptionDebug(e);
     {pos = foreachToken.sourceEnd+1;}
     }
@@ -5069,8 +5072,8 @@ Token token;
     } catch (ParseException e) {
     errorMessage = "variable expected";
     errorLevel   = ERROR;
-    errorStart = pos;
-    errorEnd   = pos;
+    errorStart = e.currentToken.sourceStart;
+    errorEnd   = e.currentToken.sourceEnd;
     processParseExceptionDebug(e);
     }
     try {
@@ -5079,8 +5082,8 @@ Token token;
     } catch (ParseException e) {
     errorMessage = "'as' expected";
     errorLevel   = ERROR;
-    errorStart = pos;
-    errorEnd   = pos;
+    errorStart = e.currentToken.sourceStart;
+    errorEnd   = e.currentToken.sourceEnd;
     processParseExceptionDebug(e);
     }
     try {
@@ -5090,8 +5093,8 @@ Token token;
     if (errorMessage != null) {if (true) throw e;}
     errorMessage = "variable expected";
     errorLevel   = ERROR;
-    errorStart = pos;
-    errorEnd   = pos;
+    errorStart = e.currentToken.sourceStart;
+    errorEnd   = e.currentToken.sourceEnd;
     processParseExceptionDebug(e);
     }
     try {
@@ -5100,8 +5103,8 @@ Token token;
     } catch (ParseException e) {
     errorMessage = "')' expected after 'foreach' keyword";
     errorLevel   = ERROR;
-    errorStart = pos;
-    errorEnd   = pos;
+    errorStart = e.currentToken.sourceStart;
+    errorEnd   = e.currentToken.sourceEnd;
     processParseExceptionDebug(e);
     }
     try {
@@ -5111,8 +5114,8 @@ Token token;
     if (errorMessage != null) {if (true) throw e;}
     errorMessage = "statement expected";
     errorLevel   = ERROR;
-    errorStart = pos;
-    errorEnd   = pos;
+    errorStart = e.currentToken.sourceStart;
+    errorEnd   = e.currentToken.sourceEnd;
     processParseExceptionDebug(e);
     }
    {if (true) return new ForeachStatement(expression,
@@ -5607,14 +5610,6 @@ final ArrayList list = new ArrayList();
     return retval;
   }
 
-  static final private boolean jj_3R_115() {
-    if (jj_scan_token(XOR)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_3R_114()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
   static final private boolean jj_3R_210() {
     if (jj_3R_116()) return true;
     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
@@ -5693,6 +5688,14 @@ final ArrayList list = new ArrayList();
     return false;
   }
 
+  static final private boolean jj_3R_106() {
+    if (jj_scan_token(DOT)) return true;
+    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    if (jj_3R_103()) return true;
+    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    return false;
+  }
+
   static final private boolean jj_3R_131() {
     if (jj_scan_token(LBRACE)) return true;
     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
@@ -5703,11 +5706,21 @@ final ArrayList list = new ArrayList();
     return false;
   }
 
-  static final private boolean jj_3R_106() {
-    if (jj_scan_token(DOT)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  static final private boolean jj_3R_97() {
     if (jj_3R_103()) return true;
     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_106()) { jj_scanpos = xsp; break; }
+      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    }
+    return false;
+  }
+
+  static final private boolean jj_3R_204() {
+    if (jj_3R_207()) return true;
+    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     return false;
   }
 
@@ -5733,24 +5746,6 @@ final ArrayList list = new ArrayList();
     return false;
   }
 
-  static final private boolean jj_3R_97() {
-    if (jj_3R_103()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    Token xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_106()) { jj_scanpos = xsp; break; }
-      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    }
-    return false;
-  }
-
-  static final private boolean jj_3R_204() {
-    if (jj_3R_207()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
   static final private boolean jj_3R_108() {
     if (jj_scan_token(_ANDL)) return true;
     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
@@ -5763,14 +5758,6 @@ final ArrayList list = new ArrayList();
     return false;
   }
 
-  static final private boolean jj_3R_68() {
-    if (jj_scan_token(DOLLAR)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_3R_122()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
   static final private boolean jj_3R_100() {
     Token xsp;
     xsp = jj_scanpos;
@@ -5820,6 +5807,14 @@ final ArrayList list = new ArrayList();
     return false;
   }
 
+  static final private boolean jj_3R_68() {
+    if (jj_scan_token(DOLLAR)) return true;
+    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    if (jj_3R_122()) return true;
+    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    return false;
+  }
+
   static final private boolean jj_3R_202() {
     if (jj_3R_207()) return true;
     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
@@ -5861,12 +5856,6 @@ final ArrayList list = new ArrayList();
     return false;
   }
 
-  static final private boolean jj_3_1() {
-    if (jj_3R_40()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
   static final private boolean jj_3R_201() {
     if (jj_3R_207()) return true;
     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
@@ -5885,6 +5874,12 @@ final ArrayList list = new ArrayList();
     return false;
   }
 
+  static final private boolean jj_3_1() {
+    if (jj_3R_40()) return true;
+    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    return false;
+  }
+
   static final private boolean jj_3R_51() {
     if (jj_scan_token(COMMA)) return true;
     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
@@ -5901,25 +5896,25 @@ final ArrayList list = new ArrayList();
     return false;
   }
 
-  static final private boolean jj_3R_116() {
-    if (jj_3R_68()) return true;
+  static final private boolean jj_3R_45() {
+    if (jj_3R_49()) return true;
     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3_1()) { jj_scanpos = xsp; break; }
+      if (jj_3R_51()) { jj_scanpos = xsp; break; }
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     }
     return false;
   }
 
-  static final private boolean jj_3R_45() {
-    if (jj_3R_49()) return true;
+  static final private boolean jj_3R_116() {
+    if (jj_3R_68()) return true;
     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_51()) { jj_scanpos = xsp; break; }
+      if (jj_3_1()) { jj_scanpos = xsp; break; }
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     }
     return false;
@@ -5970,6 +5965,12 @@ final ArrayList list = new ArrayList();
     return false;
   }
 
+  static final private boolean jj_3_5() {
+    if (jj_3R_45()) return true;
+    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    return false;
+  }
+
   static final private boolean jj_3R_186() {
     if (jj_scan_token(BIT_AND)) return true;
     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
@@ -6009,12 +6010,6 @@ final ArrayList list = new ArrayList();
     return false;
   }
 
-  static final private boolean jj_3_5() {
-    if (jj_3R_45()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
   static final private boolean jj_3R_94() {
     if (jj_scan_token(ORASSIGN)) return true;
     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
@@ -7027,16 +7022,16 @@ final ArrayList list = new ArrayList();
     return false;
   }
 
-  static final private boolean jj_3_2() {
-    if (jj_scan_token(COMMA)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_3R_41()) return true;
+  static final private boolean jj_3R_70() {
+    if (jj_3R_50()) return true;
     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     return false;
   }
 
-  static final private boolean jj_3R_70() {
-    if (jj_3R_50()) return true;
+  static final private boolean jj_3_2() {
+    if (jj_scan_token(COMMA)) return true;
+    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    if (jj_3R_41()) return true;
     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     return false;
   }
@@ -7100,6 +7095,20 @@ final ArrayList list = new ArrayList();
     return false;
   }
 
+  static final private boolean jj_3R_126() {
+    if (jj_scan_token(DIF)) return true;
+    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    return false;
+  }
+
+  static final private boolean jj_3R_105() {
+    if (jj_scan_token(PRINT)) return true;
+    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    if (jj_3R_49()) return true;
+    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    return false;
+  }
+
   static final private boolean jj_3R_198() {
     if (jj_scan_token(LPAREN)) return true;
     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
@@ -7115,20 +7124,6 @@ final ArrayList list = new ArrayList();
     return false;
   }
 
-  static final private boolean jj_3R_126() {
-    if (jj_scan_token(DIF)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  static final private boolean jj_3R_105() {
-    if (jj_scan_token(PRINT)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_3R_49()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
   static final private boolean jj_3R_125() {
     if (jj_scan_token(EQUAL_EQUAL)) return true;
     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
@@ -7189,16 +7184,6 @@ final ArrayList list = new ArrayList();
     return false;
   }
 
-  static final private boolean jj_3R_41() {
-    if (jj_3R_49()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_214()) jj_scanpos = xsp;
-    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
   static final private boolean jj_3R_52() {
     if (jj_scan_token(LBRACE)) return true;
     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
@@ -7209,6 +7194,16 @@ final ArrayList list = new ArrayList();
     return false;
   }
 
+  static final private boolean jj_3R_41() {
+    if (jj_3R_49()) return true;
+    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_214()) jj_scanpos = xsp;
+    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    return false;
+  }
+
   static final private boolean jj_3R_119() {
     if (jj_scan_token(BIT_AND)) return true;
     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
@@ -7259,6 +7254,14 @@ final ArrayList list = new ArrayList();
     return false;
   }
 
+  static final private boolean jj_3R_115() {
+    if (jj_scan_token(XOR)) return true;
+    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    if (jj_3R_114()) return true;
+    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    return false;
+  }
+
   static private boolean jj_initialized_once = false;
   static public PHPParserTokenManager token_source;
   static SimpleCharStream jj_input_stream;