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() {