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 16 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
List<ICompletionEntry> data = new List<ICompletionEntry>(); List<ICompletionEntry> data = new List<ICompletionEntry>();
if (expressionResult.Context != ExpressionContext.Global && expressionResult.Context != ExpressionContext.TypeDeclaration) { 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"; expressionResult.Expression = "Global";
} }
var rr = resolver.Resolve(expressionResult, info, editor.Document.Text); var rr = resolver.Resolve(expressionResult, info, editor.Document.Text);

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

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

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

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

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

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

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

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

Loading…
Cancel
Save