Browse Source

fixed imports-completion after newline

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/vbnet@6145 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Siegfried Pammer 15 years ago
parent
commit
a7e313349c
  1. 2
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/CompletionDataHelper.cs
  2. 13
      src/Libraries/NRefactory/Project/Src/Lexer/VBNet/ExpressionFinder.atg
  3. 8
      src/Libraries/NRefactory/Project/Src/Lexer/VBNet/Parser.cs
  4. 8
      src/Main/Base/Test/VBExpressionFinderTests.cs
  5. 7
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/VBNet/VBNetExpressionFinder.cs

2
src/AddIns/BackendBindings/VBNetBinding/Project/Src/CompletionDataHelper.cs

@ -34,7 +34,7 @@ namespace ICSharpCode.VBNetBinding @@ -34,7 +34,7 @@ namespace ICSharpCode.VBNetBinding
List<ICompletionEntry> data = new List<ICompletionEntry>();
if (expressionResult.Context != ExpressionContext.Global && expressionResult.Context != ExpressionContext.TypeDeclaration) {
if (expressionResult.Context == ExpressionContext.Importable && expressionResult.Expression.Equals("Imports", StringComparison.OrdinalIgnoreCase)) {
if (expressionResult.Context == ExpressionContext.Importable && string.IsNullOrWhiteSpace(expressionResult.Expression)) {
expressionResult.Expression = "Global";
}
var rr = resolver.Resolve(expressionResult, info, editor.Document.Text);

13
src/Libraries/NRefactory/Project/Src/Lexer/VBNet/ExpressionFinder.atg

@ -274,16 +274,9 @@ OptionStatement = @@ -274,16 +274,9 @@ OptionStatement =
"Option" ( ( "Explicit" | "Strict" | "Infer" ) [ "Off" | "On" ] | "Compare" ( "Text" | "Binary" ) ) StatementTerminator
.
ImportsStatement
(. PushContext(Context.Importable, la, t); .)
=
"Imports"
(.
nextTokenIsStartOfImportsOrAccessExpression = true;
if (la != null)
CurrentBlock.lastExpressionStart = la.Location;
.)
ImportsStatement =
"Imports" (. PushContext(Context.Importable, la, t); .)
(. nextTokenIsStartOfImportsOrAccessExpression = true; .)
(
( "Global" | Identifier | PrimitiveTypeName ) { TypeSuffix } [ ( "." | "=" ) TypeName ]
| XmlOpenTag Identifier "=" LiteralString XmlCloseTag

8
src/Libraries/NRefactory/Project/Src/Lexer/VBNet/Parser.cs

@ -1442,7 +1442,6 @@ partial class ExpressionFinder { @@ -1442,7 +1442,6 @@ partial class ExpressionFinder {
if (la == null) { currentState = 2; break; }
if (la.kind == 137) {
stateStack.Push(2);
PushContext(Context.Importable, la, t);
goto case 618;
} else {
goto case 3;
@ -7092,11 +7091,8 @@ partial class ExpressionFinder { @@ -7092,11 +7091,8 @@ partial class ExpressionFinder {
break;
}
case 619: {
nextTokenIsStartOfImportsOrAccessExpression = true;
if (la != null)
CurrentBlock.lastExpressionStart = la.Location;
PushContext(Context.Importable, la, t);
nextTokenIsStartOfImportsOrAccessExpression = true;
goto case 620;
}
case 620: {

8
src/Main/Base/Test/VBExpressionFinderTests.cs

@ -52,7 +52,7 @@ End Class @@ -52,7 +52,7 @@ End Class
const string program4 = @"
Class MainClass
Sub A
Dim a
Dim a " + @"
End Sub
End Class
";
@ -131,6 +131,12 @@ End Class @@ -131,6 +131,12 @@ End Class
Private Function CreateFolder(
End Module", "(", 1, "", ExpressionContext.Parameter);
}
[Test]
public void FindAfterNewLineImport()
{
Find("Imports System\n", "\n", 1, "", ExpressionContext.Global);
}
#endregion
#region Context Tests

7
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/VBNet/VBNetExpressionFinder.cs

@ -66,7 +66,7 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet @@ -66,7 +66,7 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet
t = lexer.NextToken();
}
if (t.EndLocation == targetPosition && t.Kind <= Tokens.ColonAssign && t.Kind > Tokens.Identifier) {
if (t.EndLocation == targetPosition && ((t.Kind <= Tokens.ColonAssign && t.Kind > Tokens.Identifier) || t.Kind == Tokens.EOL)) {
p.InformToken(t);
t = lexer.NextToken();
}
@ -82,11 +82,6 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet @@ -82,11 +82,6 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet
p.Advance();
}
if (t.EndLocation == targetPosition && t.Kind <= Tokens.ColonAssign && t.Kind > Tokens.Identifier) {
p.InformToken(t);
p.Advance();
}
BitArray expectedSet;
try {

Loading…
Cancel
Save