Browse Source

Fixed SD2-1027: #Develop closes while typeing VB 'ReDim' statement.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@1724 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 19 years ago
parent
commit
ccb13e5b9d
  1. 239
      src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs
  2. 5
      src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG

239
src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs

@ -312,30 +312,30 @@ out aliasedType);
} }
void Qualident( void Qualident(
#line 2730 "VBNET.ATG" #line 2733 "VBNET.ATG"
out string qualident) { out string qualident) {
#line 2732 "VBNET.ATG" #line 2735 "VBNET.ATG"
string name; string name;
qualidentBuilder.Length = 0; qualidentBuilder.Length = 0;
Identifier(); Identifier();
#line 2736 "VBNET.ATG" #line 2739 "VBNET.ATG"
qualidentBuilder.Append(t.val); qualidentBuilder.Append(t.val);
while ( while (
#line 2737 "VBNET.ATG" #line 2740 "VBNET.ATG"
DotAndIdentOrKw()) { DotAndIdentOrKw()) {
Expect(10); Expect(10);
IdentifierOrKeyword( IdentifierOrKeyword(
#line 2737 "VBNET.ATG" #line 2740 "VBNET.ATG"
out name); out name);
#line 2737 "VBNET.ATG" #line 2740 "VBNET.ATG"
qualidentBuilder.Append('.'); qualidentBuilder.Append(name); qualidentBuilder.Append('.'); qualidentBuilder.Append(name);
} }
#line 2739 "VBNET.ATG" #line 2742 "VBNET.ATG"
qualident = qualidentBuilder.ToString(); qualident = qualidentBuilder.ToString();
} }
@ -439,69 +439,69 @@ out attribute);
} }
void TypeModifier( void TypeModifier(
#line 2806 "VBNET.ATG" #line 2809 "VBNET.ATG"
ModifierList m) { ModifierList m) {
switch (la.kind) { switch (la.kind) {
case 148: { case 148: {
lexer.NextToken(); lexer.NextToken();
#line 2807 "VBNET.ATG" #line 2810 "VBNET.ATG"
m.Add(Modifiers.Public, t.Location); m.Add(Modifiers.Public, t.Location);
break; break;
} }
case 147: { case 147: {
lexer.NextToken(); lexer.NextToken();
#line 2808 "VBNET.ATG" #line 2811 "VBNET.ATG"
m.Add(Modifiers.Protected, t.Location); m.Add(Modifiers.Protected, t.Location);
break; break;
} }
case 99: { case 99: {
lexer.NextToken(); lexer.NextToken();
#line 2809 "VBNET.ATG" #line 2812 "VBNET.ATG"
m.Add(Modifiers.Internal, t.Location); m.Add(Modifiers.Internal, t.Location);
break; break;
} }
case 145: { case 145: {
lexer.NextToken(); lexer.NextToken();
#line 2810 "VBNET.ATG" #line 2813 "VBNET.ATG"
m.Add(Modifiers.Private, t.Location); m.Add(Modifiers.Private, t.Location);
break; break;
} }
case 158: { case 158: {
lexer.NextToken(); lexer.NextToken();
#line 2811 "VBNET.ATG" #line 2814 "VBNET.ATG"
m.Add(Modifiers.Static, t.Location); m.Add(Modifiers.Static, t.Location);
break; break;
} }
case 157: { case 157: {
lexer.NextToken(); lexer.NextToken();
#line 2812 "VBNET.ATG" #line 2815 "VBNET.ATG"
m.Add(Modifiers.New, t.Location); m.Add(Modifiers.New, t.Location);
break; break;
} }
case 122: { case 122: {
lexer.NextToken(); lexer.NextToken();
#line 2813 "VBNET.ATG" #line 2816 "VBNET.ATG"
m.Add(Modifiers.Abstract, t.Location); m.Add(Modifiers.Abstract, t.Location);
break; break;
} }
case 131: { case 131: {
lexer.NextToken(); lexer.NextToken();
#line 2814 "VBNET.ATG" #line 2817 "VBNET.ATG"
m.Add(Modifiers.Sealed, t.Location); m.Add(Modifiers.Sealed, t.Location);
break; break;
} }
case 203: { case 203: {
lexer.NextToken(); lexer.NextToken();
#line 2815 "VBNET.ATG" #line 2818 "VBNET.ATG"
m.Add(Modifiers.Partial, t.Location); m.Add(Modifiers.Partial, t.Location);
break; break;
} }
@ -1267,132 +1267,132 @@ out p);
} }
void MemberModifier( void MemberModifier(
#line 2818 "VBNET.ATG" #line 2821 "VBNET.ATG"
ModifierList m) { ModifierList m) {
switch (la.kind) { switch (la.kind) {
case 122: { case 122: {
lexer.NextToken(); lexer.NextToken();
#line 2819 "VBNET.ATG" #line 2822 "VBNET.ATG"
m.Add(Modifiers.Abstract, t.Location); m.Add(Modifiers.Abstract, t.Location);
break; break;
} }
case 79: { case 79: {
lexer.NextToken(); lexer.NextToken();
#line 2820 "VBNET.ATG" #line 2823 "VBNET.ATG"
m.Add(Modifiers.Default, t.Location); m.Add(Modifiers.Default, t.Location);
break; break;
} }
case 99: { case 99: {
lexer.NextToken(); lexer.NextToken();
#line 2821 "VBNET.ATG" #line 2824 "VBNET.ATG"
m.Add(Modifiers.Internal, t.Location); m.Add(Modifiers.Internal, t.Location);
break; break;
} }
case 157: { case 157: {
lexer.NextToken(); lexer.NextToken();
#line 2822 "VBNET.ATG" #line 2825 "VBNET.ATG"
m.Add(Modifiers.New, t.Location); m.Add(Modifiers.New, t.Location);
break; break;
} }
case 142: { case 142: {
lexer.NextToken(); lexer.NextToken();
#line 2823 "VBNET.ATG" #line 2826 "VBNET.ATG"
m.Add(Modifiers.Override, t.Location); m.Add(Modifiers.Override, t.Location);
break; break;
} }
case 123: { case 123: {
lexer.NextToken(); lexer.NextToken();
#line 2824 "VBNET.ATG" #line 2827 "VBNET.ATG"
m.Add(Modifiers.Abstract, t.Location); m.Add(Modifiers.Abstract, t.Location);
break; break;
} }
case 145: { case 145: {
lexer.NextToken(); lexer.NextToken();
#line 2825 "VBNET.ATG" #line 2828 "VBNET.ATG"
m.Add(Modifiers.Private, t.Location); m.Add(Modifiers.Private, t.Location);
break; break;
} }
case 147: { case 147: {
lexer.NextToken(); lexer.NextToken();
#line 2826 "VBNET.ATG" #line 2829 "VBNET.ATG"
m.Add(Modifiers.Protected, t.Location); m.Add(Modifiers.Protected, t.Location);
break; break;
} }
case 148: { case 148: {
lexer.NextToken(); lexer.NextToken();
#line 2827 "VBNET.ATG" #line 2830 "VBNET.ATG"
m.Add(Modifiers.Public, t.Location); m.Add(Modifiers.Public, t.Location);
break; break;
} }
case 131: { case 131: {
lexer.NextToken(); lexer.NextToken();
#line 2828 "VBNET.ATG" #line 2831 "VBNET.ATG"
m.Add(Modifiers.Sealed, t.Location); m.Add(Modifiers.Sealed, t.Location);
break; break;
} }
case 132: { case 132: {
lexer.NextToken(); lexer.NextToken();
#line 2829 "VBNET.ATG" #line 2832 "VBNET.ATG"
m.Add(Modifiers.Sealed, t.Location); m.Add(Modifiers.Sealed, t.Location);
break; break;
} }
case 158: { case 158: {
lexer.NextToken(); lexer.NextToken();
#line 2830 "VBNET.ATG" #line 2833 "VBNET.ATG"
m.Add(Modifiers.Static, t.Location); m.Add(Modifiers.Static, t.Location);
break; break;
} }
case 141: { case 141: {
lexer.NextToken(); lexer.NextToken();
#line 2831 "VBNET.ATG" #line 2834 "VBNET.ATG"
m.Add(Modifiers.Virtual, t.Location); m.Add(Modifiers.Virtual, t.Location);
break; break;
} }
case 140: { case 140: {
lexer.NextToken(); lexer.NextToken();
#line 2832 "VBNET.ATG" #line 2835 "VBNET.ATG"
m.Add(Modifiers.Overloads, t.Location); m.Add(Modifiers.Overloads, t.Location);
break; break;
} }
case 150: { case 150: {
lexer.NextToken(); lexer.NextToken();
#line 2833 "VBNET.ATG" #line 2836 "VBNET.ATG"
m.Add(Modifiers.ReadOnly, t.Location); m.Add(Modifiers.ReadOnly, t.Location);
break; break;
} }
case 184: { case 184: {
lexer.NextToken(); lexer.NextToken();
#line 2834 "VBNET.ATG" #line 2837 "VBNET.ATG"
m.Add(Modifiers.WriteOnly, t.Location); m.Add(Modifiers.WriteOnly, t.Location);
break; break;
} }
case 183: { case 183: {
lexer.NextToken(); lexer.NextToken();
#line 2835 "VBNET.ATG" #line 2838 "VBNET.ATG"
m.Add(Modifiers.WithEvents, t.Location); m.Add(Modifiers.WithEvents, t.Location);
break; break;
} }
case 81: { case 81: {
lexer.NextToken(); lexer.NextToken();
#line 2836 "VBNET.ATG" #line 2839 "VBNET.ATG"
m.Add(Modifiers.Dim, t.Location); m.Add(Modifiers.Dim, t.Location);
break; break;
} }
@ -3103,31 +3103,31 @@ out stmt);
} }
void PropertyAccessorAccessModifier( void PropertyAccessorAccessModifier(
#line 2839 "VBNET.ATG" #line 2842 "VBNET.ATG"
out Modifiers m) { out Modifiers m) {
#line 2840 "VBNET.ATG" #line 2843 "VBNET.ATG"
m = Modifiers.None; m = Modifiers.None;
while (StartOf(26)) { while (StartOf(26)) {
if (la.kind == 148) { if (la.kind == 148) {
lexer.NextToken(); lexer.NextToken();
#line 2842 "VBNET.ATG" #line 2845 "VBNET.ATG"
m |= Modifiers.Public; m |= Modifiers.Public;
} else if (la.kind == 147) { } else if (la.kind == 147) {
lexer.NextToken(); lexer.NextToken();
#line 2843 "VBNET.ATG" #line 2846 "VBNET.ATG"
m |= Modifiers.Protected; m |= Modifiers.Protected;
} else if (la.kind == 99) { } else if (la.kind == 99) {
lexer.NextToken(); lexer.NextToken();
#line 2844 "VBNET.ATG" #line 2847 "VBNET.ATG"
m |= Modifiers.Internal; m |= Modifiers.Internal;
} else { } else {
lexer.NextToken(); lexer.NextToken();
#line 2845 "VBNET.ATG" #line 2848 "VBNET.ATG"
m |= Modifiers.Private; m |= Modifiers.Private;
} }
} }
@ -3765,10 +3765,10 @@ out name);
} }
void IdentifierOrKeyword( void IdentifierOrKeyword(
#line 2773 "VBNET.ATG" #line 2776 "VBNET.ATG"
out string name) { out string name) {
#line 2775 "VBNET.ATG" #line 2778 "VBNET.ATG"
lexer.NextToken(); name = t.val; lexer.NextToken(); name = t.val;
} }
@ -3833,114 +3833,114 @@ out parameters);
} }
void PrimitiveTypeName( void PrimitiveTypeName(
#line 2780 "VBNET.ATG" #line 2783 "VBNET.ATG"
out string type) { out string type) {
#line 2781 "VBNET.ATG" #line 2784 "VBNET.ATG"
type = String.Empty; type = String.Empty;
switch (la.kind) { switch (la.kind) {
case 52: { case 52: {
lexer.NextToken(); lexer.NextToken();
#line 2782 "VBNET.ATG" #line 2785 "VBNET.ATG"
type = "Boolean"; type = "Boolean";
break; break;
} }
case 76: { case 76: {
lexer.NextToken(); lexer.NextToken();
#line 2783 "VBNET.ATG" #line 2786 "VBNET.ATG"
type = "Date"; type = "Date";
break; break;
} }
case 65: { case 65: {
lexer.NextToken(); lexer.NextToken();
#line 2784 "VBNET.ATG" #line 2787 "VBNET.ATG"
type = "Char"; type = "Char";
break; break;
} }
case 165: { case 165: {
lexer.NextToken(); lexer.NextToken();
#line 2785 "VBNET.ATG" #line 2788 "VBNET.ATG"
type = "String"; type = "String";
break; break;
} }
case 77: { case 77: {
lexer.NextToken(); lexer.NextToken();
#line 2786 "VBNET.ATG" #line 2789 "VBNET.ATG"
type = "Decimal"; type = "Decimal";
break; break;
} }
case 54: { case 54: {
lexer.NextToken(); lexer.NextToken();
#line 2787 "VBNET.ATG" #line 2790 "VBNET.ATG"
type = "Byte"; type = "Byte";
break; break;
} }
case 159: { case 159: {
lexer.NextToken(); lexer.NextToken();
#line 2788 "VBNET.ATG" #line 2791 "VBNET.ATG"
type = "Short"; type = "Short";
break; break;
} }
case 111: { case 111: {
lexer.NextToken(); lexer.NextToken();
#line 2789 "VBNET.ATG" #line 2792 "VBNET.ATG"
type = "Integer"; type = "Integer";
break; break;
} }
case 117: { case 117: {
lexer.NextToken(); lexer.NextToken();
#line 2790 "VBNET.ATG" #line 2793 "VBNET.ATG"
type = "Long"; type = "Long";
break; break;
} }
case 160: { case 160: {
lexer.NextToken(); lexer.NextToken();
#line 2791 "VBNET.ATG" #line 2794 "VBNET.ATG"
type = "Single"; type = "Single";
break; break;
} }
case 84: { case 84: {
lexer.NextToken(); lexer.NextToken();
#line 2792 "VBNET.ATG" #line 2795 "VBNET.ATG"
type = "Double"; type = "Double";
break; break;
} }
case 191: { case 191: {
lexer.NextToken(); lexer.NextToken();
#line 2793 "VBNET.ATG" #line 2796 "VBNET.ATG"
type = "UInteger"; type = "UInteger";
break; break;
} }
case 192: { case 192: {
lexer.NextToken(); lexer.NextToken();
#line 2794 "VBNET.ATG" #line 2797 "VBNET.ATG"
type = "ULong"; type = "ULong";
break; break;
} }
case 193: { case 193: {
lexer.NextToken(); lexer.NextToken();
#line 2795 "VBNET.ATG" #line 2798 "VBNET.ATG"
type = "UShort"; type = "UShort";
break; break;
} }
case 190: { case 190: {
lexer.NextToken(); lexer.NextToken();
#line 2796 "VBNET.ATG" #line 2799 "VBNET.ATG"
type = "SByte"; type = "SByte";
break; break;
} }
@ -4843,27 +4843,27 @@ out expr);
} }
void ParameterModifier( void ParameterModifier(
#line 2799 "VBNET.ATG" #line 2802 "VBNET.ATG"
ParamModifierList m) { ParamModifierList m) {
if (la.kind == 55) { if (la.kind == 55) {
lexer.NextToken(); lexer.NextToken();
#line 2800 "VBNET.ATG" #line 2803 "VBNET.ATG"
m.Add(ParameterModifiers.In); m.Add(ParameterModifiers.In);
} else if (la.kind == 53) { } else if (la.kind == 53) {
lexer.NextToken(); lexer.NextToken();
#line 2801 "VBNET.ATG" #line 2804 "VBNET.ATG"
m.Add(ParameterModifiers.Ref); m.Add(ParameterModifiers.Ref);
} else if (la.kind == 137) { } else if (la.kind == 137) {
lexer.NextToken(); lexer.NextToken();
#line 2802 "VBNET.ATG" #line 2805 "VBNET.ATG"
m.Add(ParameterModifiers.Optional); m.Add(ParameterModifiers.Optional);
} else if (la.kind == 143) { } else if (la.kind == 143) {
lexer.NextToken(); lexer.NextToken();
#line 2803 "VBNET.ATG" #line 2806 "VBNET.ATG"
m.Add(ParameterModifiers.Params); m.Add(ParameterModifiers.Params);
} else SynErr(252); } else SynErr(252);
} }
@ -5731,87 +5731,87 @@ localVariableDeclaration.Variables);
} }
void TryStatement( void TryStatement(
#line 2696 "VBNET.ATG" #line 2699 "VBNET.ATG"
out Statement tryStatement) { out Statement tryStatement) {
#line 2698 "VBNET.ATG" #line 2701 "VBNET.ATG"
Statement blockStmt = null, finallyStmt = null;List<CatchClause> catchClauses = null; Statement blockStmt = null, finallyStmt = null;List<CatchClause> catchClauses = null;
Expect(174); Expect(174);
EndOfStmt(); EndOfStmt();
Block( Block(
#line 2701 "VBNET.ATG" #line 2704 "VBNET.ATG"
out blockStmt); out blockStmt);
if (la.kind == 58 || la.kind == 88 || la.kind == 97) { if (la.kind == 58 || la.kind == 88 || la.kind == 97) {
CatchClauses( CatchClauses(
#line 2702 "VBNET.ATG" #line 2705 "VBNET.ATG"
out catchClauses); out catchClauses);
} }
if (la.kind == 97) { if (la.kind == 97) {
lexer.NextToken(); lexer.NextToken();
EndOfStmt(); EndOfStmt();
Block( Block(
#line 2703 "VBNET.ATG" #line 2706 "VBNET.ATG"
out finallyStmt); out finallyStmt);
} }
Expect(88); Expect(88);
Expect(174); Expect(174);
#line 2706 "VBNET.ATG" #line 2709 "VBNET.ATG"
tryStatement = new TryCatchStatement(blockStmt, catchClauses, finallyStmt); tryStatement = new TryCatchStatement(blockStmt, catchClauses, finallyStmt);
} }
void WithStatement( void WithStatement(
#line 2676 "VBNET.ATG" #line 2679 "VBNET.ATG"
out Statement withStatement) { out Statement withStatement) {
#line 2678 "VBNET.ATG" #line 2681 "VBNET.ATG"
Statement blockStmt = null; Statement blockStmt = null;
Expression expr = null; Expression expr = null;
Expect(182); Expect(182);
#line 2681 "VBNET.ATG" #line 2684 "VBNET.ATG"
Location start = t.Location; Location start = t.Location;
Expr( Expr(
#line 2682 "VBNET.ATG" #line 2685 "VBNET.ATG"
out expr); out expr);
EndOfStmt(); EndOfStmt();
#line 2684 "VBNET.ATG" #line 2687 "VBNET.ATG"
withStatement = new WithStatement(expr); withStatement = new WithStatement(expr);
withStatement.StartLocation = start; withStatement.StartLocation = start;
Block( Block(
#line 2687 "VBNET.ATG" #line 2690 "VBNET.ATG"
out blockStmt); out blockStmt);
#line 2689 "VBNET.ATG" #line 2692 "VBNET.ATG"
((WithStatement)withStatement).Body = (BlockStatement)blockStmt; ((WithStatement)withStatement).Body = (BlockStatement)blockStmt;
Expect(88); Expect(88);
Expect(182); Expect(182);
#line 2692 "VBNET.ATG" #line 2695 "VBNET.ATG"
withStatement.EndLocation = t.Location; withStatement.EndLocation = t.Location;
} }
void WhileOrUntil( void WhileOrUntil(
#line 2669 "VBNET.ATG" #line 2672 "VBNET.ATG"
out ConditionType conditionType) { out ConditionType conditionType) {
#line 2670 "VBNET.ATG" #line 2673 "VBNET.ATG"
conditionType = ConditionType.None; conditionType = ConditionType.None;
if (la.kind == 181) { if (la.kind == 181) {
lexer.NextToken(); lexer.NextToken();
#line 2671 "VBNET.ATG" #line 2674 "VBNET.ATG"
conditionType = ConditionType.While; conditionType = ConditionType.While;
} else if (la.kind == 177) { } else if (la.kind == 177) {
lexer.NextToken(); lexer.NextToken();
#line 2672 "VBNET.ATG" #line 2675 "VBNET.ATG"
conditionType = ConditionType.Until; conditionType = ConditionType.Until;
} else SynErr(262); } else SynErr(262);
} }
@ -5867,26 +5867,26 @@ ref expr);
} }
void CaseClauses( void CaseClauses(
#line 2629 "VBNET.ATG" #line 2632 "VBNET.ATG"
out List<CaseLabel> caseClauses) { out List<CaseLabel> caseClauses) {
#line 2631 "VBNET.ATG" #line 2634 "VBNET.ATG"
caseClauses = new List<CaseLabel>(); caseClauses = new List<CaseLabel>();
CaseLabel caseClause = null; CaseLabel caseClause = null;
CaseClause( CaseClause(
#line 2634 "VBNET.ATG" #line 2637 "VBNET.ATG"
out caseClause); out caseClause);
#line 2634 "VBNET.ATG" #line 2637 "VBNET.ATG"
if (caseClause != null) { caseClauses.Add(caseClause); } if (caseClause != null) { caseClauses.Add(caseClause); }
while (la.kind == 12) { while (la.kind == 12) {
lexer.NextToken(); lexer.NextToken();
CaseClause( CaseClause(
#line 2635 "VBNET.ATG" #line 2638 "VBNET.ATG"
out caseClause); out caseClause);
#line 2635 "VBNET.ATG" #line 2638 "VBNET.ATG"
if (caseClause != null) { caseClauses.Add(caseClause); } if (caseClause != null) { caseClauses.Add(caseClause); }
} }
} }
@ -5961,30 +5961,30 @@ out label);
} }
void ResumeStatement( void ResumeStatement(
#line 2618 "VBNET.ATG" #line 2621 "VBNET.ATG"
out ResumeStatement resumeStatement) { out ResumeStatement resumeStatement) {
#line 2620 "VBNET.ATG" #line 2623 "VBNET.ATG"
resumeStatement = null; resumeStatement = null;
string label = String.Empty; string label = String.Empty;
if ( if (
#line 2623 "VBNET.ATG" #line 2626 "VBNET.ATG"
IsResumeNext()) { IsResumeNext()) {
Expect(153); Expect(153);
Expect(128); Expect(128);
#line 2624 "VBNET.ATG" #line 2627 "VBNET.ATG"
resumeStatement = new ResumeStatement(true); resumeStatement = new ResumeStatement(true);
} else if (la.kind == 153) { } else if (la.kind == 153) {
lexer.NextToken(); lexer.NextToken();
if (StartOf(37)) { if (StartOf(37)) {
LabelName( LabelName(
#line 2625 "VBNET.ATG" #line 2628 "VBNET.ATG"
out label); out label);
} }
#line 2625 "VBNET.ATG" #line 2628 "VBNET.ATG"
resumeStatement = new ResumeStatement(label); resumeStatement = new ResumeStatement(label);
} else SynErr(264); } else SynErr(264);
} }
@ -6021,16 +6021,19 @@ out arguments, out canBeNormal, out canBeRedim);
#line 2610 "VBNET.ATG" #line 2610 "VBNET.ATG"
expr = new InvocationExpression(expr, arguments); expr = new InvocationExpression(expr, arguments);
if (canBeRedim == false || canBeNormal && (la.kind == Tokens.Dot || la.kind == Tokens.OpenParenthesis)) { if (canBeRedim == false || canBeNormal && (la.kind == Tokens.Dot || la.kind == Tokens.OpenParenthesis)) {
ReDimClauseInternal(ref expr); if (this.Errors.Count == 0) {
// don't recurse on parse errors - could result in endless recursion
ReDimClauseInternal(ref expr);
}
} }
} }
void CaseClause( void CaseClause(
#line 2639 "VBNET.ATG" #line 2642 "VBNET.ATG"
out CaseLabel caseClause) { out CaseLabel caseClause) {
#line 2641 "VBNET.ATG" #line 2644 "VBNET.ATG"
Expression expr = null; Expression expr = null;
Expression sexpr = null; Expression sexpr = null;
BinaryOperatorType op = BinaryOperatorType.None; BinaryOperatorType op = BinaryOperatorType.None;
@ -6039,7 +6042,7 @@ out CaseLabel caseClause) {
if (la.kind == 86) { if (la.kind == 86) {
lexer.NextToken(); lexer.NextToken();
#line 2647 "VBNET.ATG" #line 2650 "VBNET.ATG"
caseClause = new CaseLabel(); caseClause = new CaseLabel();
} else if (StartOf(38)) { } else if (StartOf(38)) {
if (la.kind == 113) { if (la.kind == 113) {
@ -6049,76 +6052,76 @@ out CaseLabel caseClause) {
case 27: { case 27: {
lexer.NextToken(); lexer.NextToken();
#line 2651 "VBNET.ATG" #line 2654 "VBNET.ATG"
op = BinaryOperatorType.LessThan; op = BinaryOperatorType.LessThan;
break; break;
} }
case 26: { case 26: {
lexer.NextToken(); lexer.NextToken();
#line 2652 "VBNET.ATG" #line 2655 "VBNET.ATG"
op = BinaryOperatorType.GreaterThan; op = BinaryOperatorType.GreaterThan;
break; break;
} }
case 30: { case 30: {
lexer.NextToken(); lexer.NextToken();
#line 2653 "VBNET.ATG" #line 2656 "VBNET.ATG"
op = BinaryOperatorType.LessThanOrEqual; op = BinaryOperatorType.LessThanOrEqual;
break; break;
} }
case 29: { case 29: {
lexer.NextToken(); lexer.NextToken();
#line 2654 "VBNET.ATG" #line 2657 "VBNET.ATG"
op = BinaryOperatorType.GreaterThanOrEqual; op = BinaryOperatorType.GreaterThanOrEqual;
break; break;
} }
case 11: { case 11: {
lexer.NextToken(); lexer.NextToken();
#line 2655 "VBNET.ATG" #line 2658 "VBNET.ATG"
op = BinaryOperatorType.Equality; op = BinaryOperatorType.Equality;
break; break;
} }
case 28: { case 28: {
lexer.NextToken(); lexer.NextToken();
#line 2656 "VBNET.ATG" #line 2659 "VBNET.ATG"
op = BinaryOperatorType.InEquality; op = BinaryOperatorType.InEquality;
break; break;
} }
default: SynErr(265); break; default: SynErr(265); break;
} }
Expr( Expr(
#line 2658 "VBNET.ATG" #line 2661 "VBNET.ATG"
out expr); out expr);
#line 2660 "VBNET.ATG" #line 2663 "VBNET.ATG"
caseClause = new CaseLabel(op, expr); caseClause = new CaseLabel(op, expr);
} else if (StartOf(27)) { } else if (StartOf(27)) {
Expr( Expr(
#line 2662 "VBNET.ATG" #line 2665 "VBNET.ATG"
out expr); out expr);
if (la.kind == 172) { if (la.kind == 172) {
lexer.NextToken(); lexer.NextToken();
Expr( Expr(
#line 2662 "VBNET.ATG" #line 2665 "VBNET.ATG"
out sexpr); out sexpr);
} }
#line 2664 "VBNET.ATG" #line 2667 "VBNET.ATG"
caseClause = new CaseLabel(expr, sexpr); caseClause = new CaseLabel(expr, sexpr);
} else SynErr(266); } else SynErr(266);
} }
void CatchClauses( void CatchClauses(
#line 2711 "VBNET.ATG" #line 2714 "VBNET.ATG"
out List<CatchClause> catchClauses) { out List<CatchClause> catchClauses) {
#line 2713 "VBNET.ATG" #line 2716 "VBNET.ATG"
catchClauses = new List<CatchClause>(); catchClauses = new List<CatchClause>();
TypeReference type = null; TypeReference type = null;
Statement blockStmt = null; Statement blockStmt = null;
@ -6130,27 +6133,27 @@ out List<CatchClause> catchClauses) {
if (StartOf(13)) { if (StartOf(13)) {
Identifier(); Identifier();
#line 2721 "VBNET.ATG" #line 2724 "VBNET.ATG"
name = t.val; name = t.val;
if (la.kind == 48) { if (la.kind == 48) {
lexer.NextToken(); lexer.NextToken();
TypeName( TypeName(
#line 2721 "VBNET.ATG" #line 2724 "VBNET.ATG"
out type); out type);
} }
} }
if (la.kind == 180) { if (la.kind == 180) {
lexer.NextToken(); lexer.NextToken();
Expr( Expr(
#line 2722 "VBNET.ATG" #line 2725 "VBNET.ATG"
out expr); out expr);
} }
EndOfStmt(); EndOfStmt();
Block( Block(
#line 2724 "VBNET.ATG" #line 2727 "VBNET.ATG"
out blockStmt); out blockStmt);
#line 2725 "VBNET.ATG" #line 2728 "VBNET.ATG"
catchClauses.Add(new CatchClause(type, name, blockStmt, expr)); catchClauses.Add(new CatchClause(type, name, blockStmt, expr));
} }
} }

5
src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG

@ -2609,7 +2609,10 @@ ReDimClauseInternal<ref Expression expr>
")" ")"
(. expr = new InvocationExpression(expr, arguments); (. expr = new InvocationExpression(expr, arguments);
if (canBeRedim == false || canBeNormal && (la.kind == Tokens.Dot || la.kind == Tokens.OpenParenthesis)) { if (canBeRedim == false || canBeNormal && (la.kind == Tokens.Dot || la.kind == Tokens.OpenParenthesis)) {
ReDimClauseInternal(ref expr); if (this.Errors.Count == 0) {
// don't recurse on parse errors - could result in endless recursion
ReDimClauseInternal(ref expr);
}
} }
.) .)
. .

Loading…
Cancel
Save