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

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

@ -534,9 +534,9 @@ ImportsStmt @@ -534,9 +534,9 @@ ImportsStmt
Point startPos = t.Location;
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
(.

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

@ -107,7 +107,25 @@ namespace ICSharpCode.NRefactory.Tests.AST @@ -107,7 +107,25 @@ namespace ICSharpCode.NRefactory.Tests.AST
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]
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]
public void VBNetDeclarationTest()
{

Loading…
Cancel
Save