From dd4e5f9ea96d9f1f31cb6b98bda9457697325af3 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Sun, 23 Apr 2006 19:23:05 +0000 Subject: [PATCH] Fixed crash when parsing incomplete Imports statement. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.0@1353 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Project/Src/Parser/VBNet/Parser.cs | 4 ++-- .../Project/Src/Parser/VBNet/VBNET.ATG | 4 ++-- .../GlobalScope/UsingDeclarationTests.cs | 18 ++++++++++++++++++ 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs b/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs index 9839ad27ba..ebab3c07a7 100644 --- a/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs +++ b/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs @@ -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); out u); #line 539 "VBNET.ATG" - usings.Add(u); + if (u != null) { usings.Add(u); } } EndOfStmt(); diff --git a/src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG b/src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG index 51c2d292fe..91214f8714 100644 --- a/src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG +++ b/src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG @@ -534,9 +534,9 @@ ImportsStmt Point startPos = t.Location; Using u; .) - ImportClause (. usings.Add(u); .) + ImportClause (. if (u != null) { usings.Add(u); } .) { - "," ImportClause (. usings.Add(u); .) + "," ImportClause (. if (u != null) { usings.Add(u); } .) } EndOfStmt (. diff --git a/src/Libraries/NRefactory/Test/Parser/GlobalScope/UsingDeclarationTests.cs b/src/Libraries/NRefactory/Test/Parser/GlobalScope/UsingDeclarationTests.cs index b2d1a4c33f..37611bedde 100644 --- a/src/Libraries/NRefactory/Test/Parser/GlobalScope/UsingDeclarationTests.cs +++ b/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)); 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() {