Browse Source

Fixed crash when parsing incomplete Imports statement.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.0@1353 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
dd4e5f9ea9
  1. 4
      src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs
  2. 4
      src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG
  3. 18
      src/Libraries/NRefactory/Test/Parser/GlobalScope/UsingDeclarationTests.cs

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

@ -379,7 +379,7 @@ ref val);
out u); out u);
#line 537 "VBNET.ATG" #line 537 "VBNET.ATG"
usings.Add(u); if (u != null) { usings.Add(u); }
while (la.kind == 12) { while (la.kind == 12) {
lexer.NextToken(); lexer.NextToken();
ImportClause( ImportClause(
@ -387,7 +387,7 @@ out u);
out u); out u);
#line 539 "VBNET.ATG" #line 539 "VBNET.ATG"
usings.Add(u); if (u != null) { usings.Add(u); }
} }
EndOfStmt(); EndOfStmt();

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

@ -534,9 +534,9 @@ ImportsStmt
Point startPos = t.Location; Point startPos = t.Location;
Using u; Using u;
.) .)
ImportClause<out u> (. usings.Add(u); .) ImportClause<out u> (. if (u != null) { usings.Add(u); } .)
{ {
"," ImportClause<out u> (. usings.Add(u); .) "," ImportClause<out u> (. if (u != null) { usings.Add(u); } .)
} }
EndOfStmt EndOfStmt
(. (.

18
src/Libraries/NRefactory/Test/Parser/GlobalScope/UsingDeclarationTests.cs

@ -107,7 +107,25 @@ namespace ICSharpCode.NRefactory.Tests.AST
IParser parser = ParserFactory.CreateParser(SupportedLanguage.VBNet, new StringReader(program)); IParser parser = ParserFactory.CreateParser(SupportedLanguage.VBNet, new StringReader(program));
parser.Parse(); parser.Parse();
Assert.IsTrue(parser.Errors.count > 0); Assert.IsTrue(parser.Errors.count > 0);
UsingDeclaration u = (UsingDeclaration)parser.CompilationUnit.Children[0];
foreach (Using us in u.Usings) {
Assert.IsNotNull(us);
}
} }
[Test]
public void VBNetWrongUsing2Test()
{
string program = "Imports ,\n";
IParser parser = ParserFactory.CreateParser(SupportedLanguage.VBNet, new StringReader(program));
parser.Parse();
Assert.IsTrue(parser.Errors.count > 0);
UsingDeclaration u = (UsingDeclaration)parser.CompilationUnit.Children[0];
foreach (Using us in u.Usings) {
Assert.IsNotNull(us);
}
}
[Test] [Test]
public void VBNetDeclarationTest() public void VBNetDeclarationTest()
{ {

Loading…
Cancel
Save