Browse Source

Improved SharpDevelop.Dom API.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2465 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 19 years ago
parent
commit
2e258f2150
  1. 6
      samples/CSharpCodeCompletion/CodeCompletionProvider.cs
  2. 11
      samples/CSharpCodeCompletion/HostCallbackImplementation.cs
  3. 4
      samples/CSharpCodeCompletion/MainForm.cs
  4. 13
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/BooResolver.cs
  5. 4
      src/AddIns/BackendBindings/Boo/BooBinding/Test/ResolverTests.cs
  6. 18
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpCompletionBinding.cs
  7. 4
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Parser/Parser.cs
  8. 2
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/VBToCSharpConverter.cs
  9. 2
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/Parser/Parser.cs
  10. 2
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/CSharpToVBConverter.cs
  11. 2
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetCompletionBinding.cs
  12. 5
      src/AddIns/DisplayBindings/XmlEditor/Project/Src/Parser.cs
  13. 2
      src/AddIns/Misc/CodeAnalysis/Src/FxCopLogger.cs
  14. 2
      src/AddIns/Misc/RegExpTk/Project/Src/Dialogs/MainWindow.cs
  15. 17
      src/AddIns/Misc/ResourceToolkit/Project/Src/Resolver/NRefactoryAstCacheService.cs
  16. 2
      src/Main/Base/Project/Src/Commands/VBConverter/CSharpConvertBuffer.cs
  17. 2
      src/Main/Base/Project/Src/Commands/VBConverter/ConvertBuffer.cs
  18. 61
      src/Main/Base/Project/Src/Gui/Dialogs/AbstractOptionPanel.cs
  19. 2
      src/Main/Base/Project/Src/Gui/Dialogs/NewFileDialog.cs
  20. 6
      src/Main/Base/Project/Src/Gui/Dialogs/NewProjectDialog.cs
  21. 4
      src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ExternalToolPanel.cs
  22. 2
      src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/IDEOptions/ProjectAndSolutionOptionsPanel.cs
  23. 2
      src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/ApplicationSettings.cs
  24. 2
      src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/Signing.cs
  25. 2
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserPad.cs
  26. 12
      src/Main/Base/Project/Src/Project/ConfigurationGuiHelper.cs
  27. 2
      src/Main/Base/Project/Src/Project/MSBuildEngineWorker.cs
  28. 2
      src/Main/Base/Project/Src/Services/File/FileService.cs
  29. 1
      src/Main/Base/Project/Src/Services/ParserService/DomHostCallback.cs
  30. 13
      src/Main/Base/Project/Src/Services/ParserService/ParserService.cs
  31. 8
      src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs
  32. 2
      src/Main/Base/Project/Src/TextEditor/Commands/ClassBookmarkMenuBuilder.cs
  33. 2
      src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/OverrideCompletionDataProvider.cs
  34. 8
      src/Main/Base/Project/Src/TextEditor/Gui/Editor/NRefactoryCodeCompletionBinding.cs
  35. 3
      src/Main/Base/Test/CSharpExpressionFinderTests.cs
  36. 11
      src/Main/Base/Test/CodeConverterTests.cs
  37. 48
      src/Main/Base/Test/NRefactoryResolverTests.cs
  38. 2
      src/Main/Base/Test/ReflectionLayerTests.cs
  39. 4
      src/Main/Base/Test/SearchGenericClassTests.cs
  40. 2
      src/Main/Base/Test/Utils/MockDefaultReturnType.cs
  41. 1
      src/Main/Base/Test/VBExpressionFinderTests.cs
  42. 10
      src/Main/Core/Project/Src/Services/FileUtility/FileUtility.cs
  43. 8
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CSharp/ExpressionFinder.cs
  44. 11
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ClassFinder.cs
  45. 7
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/HostCallback.cs
  46. 4
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/IResolver.cs
  47. 2
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/AbstractReturnType.cs
  48. 2
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/CombinedReturnType.cs
  49. 4
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/DefaultReturnType.cs
  50. 12
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/GetClassReturnType.cs
  51. 4
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/ProxyReturnType.cs
  52. 11
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Interfaces/IReturnType.cs
  53. 22
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/CSharpToVBNetConvertVisitor.cs
  54. 45
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryResolver.cs
  55. 14
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/VBNetToCSharpConvertVisitor.cs
  56. 4
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/DefaultProjectContent.cs
  57. 6
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/ProjectContentRegistry.cs
  58. 11
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/ReflectionProjectContent.cs
  59. 2
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ReflectionLayer/DomPersistence.cs

6
samples/CSharpCodeCompletion/CodeCompletionProvider.cs

@ -92,11 +92,11 @@ namespace CSharpEditor @@ -92,11 +92,11 @@ namespace CSharpEditor
// new DefaultCompletionData("Text", "Description", 1)
//};
NRefactoryResolver resolver = new NRefactoryResolver(mainForm.myProjectContent, mainForm.myProjectContent.Language);
NRefactoryResolver resolver = new NRefactoryResolver(mainForm.myProjectContent.Language);
Dom.ResolveResult rr = resolver.Resolve(FindExpression(textArea),
textArea.Caret.Line,
textArea.Caret.Column,
fileName,
mainForm.parseInformation,
textArea.MotherTextEditorControl.Text);
List<ICompletionData> resultList = new List<ICompletionData>();
if (rr != null) {
@ -119,7 +119,7 @@ namespace CSharpEditor @@ -119,7 +119,7 @@ namespace CSharpEditor
if (MainForm.IsVisualBasic) {
finder = new Dom.VBNet.VBExpressionFinder();
} else {
finder = new Dom.CSharp.CSharpExpressionFinder(MainForm.DummyFileName);
finder = new Dom.CSharp.CSharpExpressionFinder(delegate { return mainForm.parseInformation; });
}
return finder.FindExpression(textArea.Document.TextContent, textArea.Caret.Offset - 1);
}

11
samples/CSharpCodeCompletion/HostCallbackImplementation.cs

@ -42,17 +42,6 @@ namespace CSharpEditor @@ -42,17 +42,6 @@ namespace CSharpEditor
{
public static void Register(MainForm mainForm)
{
// Must be implemented. Gets the parse information for the specified file.
HostCallback.GetParseInformation = delegate(string fileName) {
if (fileName != MainForm.DummyFileName)
throw new Exception("Unknown file");
if (mainForm.lastCompilationUnit == null)
return null;
ParseInformation pi = new ParseInformation();
pi.ValidCompilationUnit = mainForm.lastCompilationUnit;
return pi;
};
// Must be implemented. Gets the project content of the active project.
HostCallback.GetCurrentProjectContent = delegate {
return mainForm.myProjectContent;

4
samples/CSharpCodeCompletion/MainForm.cs

@ -49,7 +49,8 @@ namespace CSharpEditor @@ -49,7 +49,8 @@ namespace CSharpEditor
internal Dom.ProjectContentRegistry pcRegistry;
internal Dom.DefaultProjectContent myProjectContent;
internal Dom.ICompilationUnit lastCompilationUnit;
internal Dom.ParseInformation parseInformation = new Dom.ParseInformation();
Dom.ICompilationUnit lastCompilationUnit;
Thread parserThread;
public static bool IsVisualBasic = false;
@ -175,6 +176,7 @@ class A @@ -175,6 +176,7 @@ class A
// Remove information from lastCompilationUnit and add information from newCompilationUnit.
myProjectContent.UpdateCompilationUnit(lastCompilationUnit, newCompilationUnit, DummyFileName);
lastCompilationUnit = newCompilationUnit;
parseInformation.ValidCompilationUnit = newCompilationUnit;
}
Dom.ICompilationUnit ConvertCompilationUnit(NRefactory.Ast.CompilationUnit cu)

13
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/BooResolver.cs

@ -77,9 +77,8 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -77,9 +77,8 @@ namespace Grunwald.BooBinding.CodeCompletion
#endregion
#region Initialization
bool Initialize(string fileName, int caretLine, int caretColumn)
bool Initialize(ParseInformation parseInfo, int caretLine, int caretColumn)
{
ParseInformation parseInfo = ParserService.GetParseInformation(fileName);
if (parseInfo == null) {
return false;
}
@ -168,7 +167,7 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -168,7 +167,7 @@ namespace Grunwald.BooBinding.CodeCompletion
lexInfo = node.LexicalInfo;
node = node.ParentNode;
} while (lexInfo == null || lexInfo.FileName == null);
if (!Initialize(lexInfo.FileName, lexInfo.Line, lexInfo.Column))
if (!Initialize(ParserService.GetParseInformation(lexInfo.FileName), lexInfo.Line, lexInfo.Column))
return null;
if (callingClass != null)
this.callingClass = callingClass;
@ -194,9 +193,9 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -194,9 +193,9 @@ namespace Grunwald.BooBinding.CodeCompletion
#region Resolve
public ResolveResult Resolve(ExpressionResult expressionResult,
int caretLineNumber, int caretColumn,
string fileName, string fileContent)
ParseInformation parseInfo, string fileContent)
{
if (!Initialize(fileName, caretLineNumber, caretColumn))
if (!Initialize(parseInfo, caretLineNumber, caretColumn))
return null;
LoggingService.Debug("Resolve " + expressionResult.ToString());
if (expressionResult.Expression == "__GlobalNamespace") { // used for "import" completion
@ -293,11 +292,11 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -293,11 +292,11 @@ namespace Grunwald.BooBinding.CodeCompletion
return c2;
}
public ArrayList CtrlSpace(int caretLine, int caretColumn, string fileName, string fileContent, ExpressionContext context)
public ArrayList CtrlSpace(int caretLine, int caretColumn, ParseInformation parseInfo, string fileContent, ExpressionContext context)
{
ArrayList result = new ArrayList();
if (!Initialize(fileName, caretLine, caretColumn))
if (!Initialize(parseInfo, caretLine, caretColumn))
return null;
if (context == ExpressionContext.Importable) {
pc.AddNamespaceContents(result, "", pc.Language, true);

4
src/AddIns/BackendBindings/Boo/BooBinding/Test/ResolverTests.cs

@ -83,7 +83,7 @@ namespace Grunwald.BooBinding.Tests @@ -83,7 +83,7 @@ namespace Grunwald.BooBinding.Tests
GetPos(prog, marker, out line, out column);
BooResolver r = new BooResolver();
return r.Resolve(er, line, column, fileName, prog);
return r.Resolve(er, line, column, ParserService.GetParseInformation(fileName), prog);
}
#endregion
@ -379,7 +379,7 @@ namespace Grunwald.BooBinding.Tests @@ -379,7 +379,7 @@ namespace Grunwald.BooBinding.Tests
GetPos(prog, "/*mark*/", out line, out column);
BooResolver r = new BooResolver();
System.Collections.ArrayList ar;
ar = r.CtrlSpace(line, column, fileName, prog, ExpressionContext.Default);
ar = r.CtrlSpace(line, column, ParserService.GetParseInformation(fileName), prog, ExpressionContext.Default);
foreach (string e in unExpected) {
foreach (object o in ar) {
if (e.Equals(o))

18
src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpCompletionBinding.cs

@ -30,9 +30,14 @@ namespace CSharpBinding @@ -30,9 +30,14 @@ namespace CSharpBinding
{
}
static CSharpExpressionFinder CreateExpressionFinder(string fileName)
{
return new CSharpExpressionFinder(delegate { return ParserService.GetParseInformation(fileName); });
}
public override bool HandleKeyPress(SharpDevelopTextAreaControl editor, char ch)
{
CSharpExpressionFinder ef = new CSharpExpressionFinder(editor.FileName);
CSharpExpressionFinder ef = CreateExpressionFinder(editor.FileName);
int cursor = editor.ActiveTextAreaControl.Caret.Offset;
ExpressionContext context = null;
if (ch == '(') {
@ -132,7 +137,8 @@ namespace CSharpBinding @@ -132,7 +137,8 @@ namespace CSharpBinding
t.col, editor.FileName,
editor.Document.TextContent);
if (rr != null && rr.ResolvedType != null) {
ClassFinder context = new ClassFinder(editor.FileName, editor.ActiveTextAreaControl.Caret.Line, t.col);
ClassFinder context = new ClassFinder(ParserService.GetParseInformation(editor.FileName),
editor.ActiveTextAreaControl.Caret.Line, t.col);
if (CodeGenerator.CanUseShortTypeName(rr.ResolvedType, context))
CSharpAmbience.Instance.ConversionFlags = ConversionFlags.None;
else
@ -150,7 +156,7 @@ namespace CSharpBinding @@ -150,7 +156,7 @@ namespace CSharpBinding
bool IsInComment(SharpDevelopTextAreaControl editor)
{
CSharpExpressionFinder ef = new CSharpExpressionFinder(editor.FileName);
CSharpExpressionFinder ef = CreateExpressionFinder(editor.FileName);
int cursor = editor.ActiveTextAreaControl.Caret.Offset - 1;
return ef.FilterComments(editor.Document.GetText(0, cursor + 1), ref cursor) == null;
}
@ -196,7 +202,7 @@ namespace CSharpBinding @@ -196,7 +202,7 @@ namespace CSharpBinding
bool ShowNewCompletion(SharpDevelopTextAreaControl editor)
{
CSharpExpressionFinder ef = new CSharpExpressionFinder(editor.FileName);
CSharpExpressionFinder ef = CreateExpressionFinder(editor.FileName);
int cursor = editor.ActiveTextAreaControl.Caret.Offset;
ExpressionContext context = ef.FindExpression(editor.Document.GetText(0, cursor) + " T.", cursor + 2).Context;
if (context.IsObjectCreation) {
@ -210,8 +216,8 @@ namespace CSharpBinding @@ -210,8 +216,8 @@ namespace CSharpBinding
bool DoCaseCompletion(SharpDevelopTextAreaControl editor)
{
ICSharpCode.TextEditor.Caret caret = editor.ActiveTextAreaControl.Caret;
NRefactoryResolver r = new NRefactoryResolver(ParserService.CurrentProjectContent, LanguageProperties.CSharp);
if (r.Initialize(editor.FileName, caret.Line + 1, caret.Column + 1)) {
NRefactoryResolver r = new NRefactoryResolver(LanguageProperties.CSharp);
if (r.Initialize(ParserService.GetParseInformation(editor.FileName), caret.Line + 1, caret.Column + 1)) {
AST.INode currentMember = r.ParseCurrentMember(editor.Text);
if (currentMember != null) {
CaseCompletionSwitchFinder ccsf = new CaseCompletionSwitchFinder(caret.Line + 1, caret.Column + 1);

4
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Parser/Parser.cs

@ -37,7 +37,7 @@ namespace CSharpBinding.Parser @@ -37,7 +37,7 @@ namespace CSharpBinding.Parser
public IExpressionFinder CreateExpressionFinder(string fileName)
{
return new CSharpExpressionFinder(fileName);
return new CSharpExpressionFinder(delegate { return ParserService.GetParseInformation(fileName); });
}
public bool CanParse(string fileName)
@ -115,7 +115,7 @@ namespace CSharpBinding.Parser @@ -115,7 +115,7 @@ namespace CSharpBinding.Parser
public IResolver CreateResolver()
{
return new NRefactoryResolver(ParserService.CurrentProjectContent, LanguageProperties.CSharp);
return new NRefactoryResolver(LanguageProperties.CSharp);
}
///////// IParser Interface END
}

2
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/VBToCSharpConverter.cs

@ -42,7 +42,7 @@ namespace CSharpBinding @@ -42,7 +42,7 @@ namespace CSharpBinding
{
PreprocessingDirective.VBToCSharp(specials);
IProjectContent pc = ParserService.GetProjectContent(sourceItem.Project) ?? ParserService.CurrentProjectContent;
compilationUnit.AcceptVisitor(new VBNetToCSharpConvertVisitor(pc, sourceItem.FileName), null);
compilationUnit.AcceptVisitor(new VBNetToCSharpConvertVisitor(pc, ParserService.GetParseInformation(sourceItem.FileName)), null);
}
}
}

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

@ -134,7 +134,7 @@ namespace VBNetBinding.Parser @@ -134,7 +134,7 @@ namespace VBNetBinding.Parser
public IResolver CreateResolver()
{
return new NRefactoryResolver(ParserService.CurrentProjectContent, LanguageProperties.VBNet);
return new NRefactoryResolver(LanguageProperties.VBNet);
}
///////// IParser Interface END
}

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

@ -35,7 +35,7 @@ namespace VBNetBinding @@ -35,7 +35,7 @@ namespace VBNetBinding
{
PreprocessingDirective.CSharpToVB(specials);
IProjectContent pc = ParserService.GetProjectContent(sourceItem.Project) ?? ParserService.CurrentProjectContent;
compilationUnit.AcceptVisitor(new CSharpToVBNetConvertVisitor(pc, sourceItem.FileName), null);
compilationUnit.AcceptVisitor(new CSharpToVBNetConvertVisitor(pc, ParserService.GetParseInformation(sourceItem.FileName)), null);
}
protected override void CopyProperties(IProject sourceProject, IProject targetProject)

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

@ -129,7 +129,7 @@ namespace VBNetBinding @@ -129,7 +129,7 @@ namespace VBNetBinding
t2.col, editor.FileName,
editor.Document.TextContent);
if (rr != null && rr.ResolvedType != null) {
ClassFinder context = new ClassFinder(editor.FileName, editor.ActiveTextAreaControl.Caret.Line, t1.col);
ClassFinder context = new ClassFinder(ParserService.GetParseInformation(editor.FileName), editor.ActiveTextAreaControl.Caret.Line, t1.col);
if (CodeGenerator.CanUseShortTypeName(rr.ResolvedType, context))
VBNetAmbience.Instance.ConversionFlags = ConversionFlags.None;
else

5
src/AddIns/DisplayBindings/XmlEditor/Project/Src/Parser.cs

@ -46,11 +46,6 @@ namespace ICSharpCode.XmlEditor @@ -46,11 +46,6 @@ namespace ICSharpCode.XmlEditor
return null;
}
public ICompilationUnit Parse(IProjectContent projectContent, string fileName)
{
return Parse(projectContent, fileName, null);
}
public ICompilationUnit Parse(IProjectContent projectContent, string fileName, string fileContent)
{
DefaultCompilationUnit compilationUnit = new DefaultCompilationUnit(projectContent);

2
src/AddIns/Misc/CodeAnalysis/Src/FxCopLogger.cs

@ -86,7 +86,7 @@ namespace ICSharpCode.CodeAnalysis @@ -86,7 +86,7 @@ namespace ICSharpCode.CodeAnalysis
{
string[] moreData = (subcategory ?? "").Split('|');
BuildError err = engineWorker.CurrentErrorOrWarning;
if (FileUtility.IsValidFileName(file) &&
if (FileUtility.IsValidPath(file) &&
Path.GetFileName(file) == "SharpDevelop.CodeAnalysis.targets") {
err.FileName = null;
}

2
src/AddIns/Misc/RegExpTk/Project/Src/Dialogs/MainWindow.cs

@ -185,7 +185,7 @@ namespace Plugins.RegExpTk { @@ -185,7 +185,7 @@ namespace Plugins.RegExpTk {
string file_ = ((TextBox)ControlDictionary["AssemblyFileCompileFileTextBox"]).Text;
if(! FileUtility.IsValidFileName(((TextBox)ControlDictionary["AssemblyFileCompileFileTextBox"]).Text)) {
if(! FileUtility.IsValidPath(((TextBox)ControlDictionary["AssemblyFileCompileFileTextBox"]).Text)) {
compileErrorProvider.SetError((TextBox)ControlDictionary["AssemblyFileCompileFileTextBox"], ResourceService.GetString("RegExpTk.Messages.FilenameInvalid"));
error = true;
}

17
src/AddIns/Misc/ResourceToolkit/Project/Src/Resolver/NRefactoryAstCacheService.cs

@ -215,18 +215,9 @@ namespace Hornung.ResourceToolkit.Resolver @@ -215,18 +215,9 @@ namespace Hornung.ResourceToolkit.Resolver
return null;
}
// HACK: initialize resolver with correct language properties
// when file language != project language
// see http://community.sharpdevelop.net/forums/thread/12453.aspx
// Ideally ParserService should provide a GetResolver overload taking file name and project content
// instead of always using the current project content
NRefactoryResolver fileResolverWrongProject = ParserService.CreateResolver(fileName) as NRefactoryResolver;
NRefactoryResolver resolver;
if (fileResolverWrongProject != null) {
resolver = new NRefactoryResolver(pc, fileResolverWrongProject.LanguageProperties);
} else {
resolver = new NRefactoryResolver(pc, LanguageProperties.CSharp);
NRefactoryResolver resolver = ParserService.CreateResolver(fileName) as NRefactoryResolver;
if (resolver == null) {
resolver = new NRefactoryResolver(LanguageProperties.CSharp);
}
if (compilationUnit == null) {
@ -237,7 +228,7 @@ namespace Hornung.ResourceToolkit.Resolver @@ -237,7 +228,7 @@ namespace Hornung.ResourceToolkit.Resolver
return null;
}
if (!resolver.Initialize(fileName, caretLine, caretColumn)) {
if (!resolver.Initialize(ParserService.GetParseInformation(fileName), caretLine, caretColumn)) {
LoggingService.Info("ResourceToolkit: NRefactoryAstCacheService: ResolveLowLevel failed. NRefactoryResolver.Initialize returned false.");
return null;
}

2
src/Main/Base/Project/Src/Commands/VBConverter/CSharpConvertBuffer.cs

@ -37,7 +37,7 @@ namespace ICSharpCode.SharpDevelop.Commands @@ -37,7 +37,7 @@ namespace ICSharpCode.SharpDevelop.Commands
List<ISpecial> specials = p.Lexer.SpecialTracker.CurrentSpecials;
PreprocessingDirective.VBToCSharp(specials);
IAstVisitor v = new VBNetToCSharpConvertVisitor(ParserService.CurrentProjectContent,
content.PrimaryFileName);
ParserService.GetParseInformation(content.PrimaryFileName));
v.VisitCompilationUnit(p.CompilationUnit, null);
using (SpecialNodesInserter.Install(specials, output)) {
output.VisitCompilationUnit(p.CompilationUnit, null);

2
src/Main/Base/Project/Src/Commands/VBConverter/ConvertBuffer.cs

@ -38,7 +38,7 @@ namespace ICSharpCode.SharpDevelop.Commands @@ -38,7 +38,7 @@ namespace ICSharpCode.SharpDevelop.Commands
List<ISpecial> specials = p.Lexer.SpecialTracker.CurrentSpecials;
PreprocessingDirective.CSharpToVB(specials);
IAstVisitor v = new CSharpToVBNetConvertVisitor(ParserService.CurrentProjectContent,
content.PrimaryFileName);
ParserService.GetParseInformation(content.PrimaryFileName));
v.VisitCompilationUnit(p.CompilationUnit, null);
using (SpecialNodesInserter.Install(specials, vbv)) {
vbv.VisitCompilationUnit(p.CompilationUnit, null);

61
src/Main/Base/Project/Src/Gui/Dialogs/AbstractOptionPanel.cs

@ -95,16 +95,6 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -95,16 +95,6 @@ namespace ICSharpCode.SharpDevelop.Gui
protected string baseDirectory;
[Obsolete("Please specify fileFilter and targetNeedsMSBuildEncoding")]
protected void ConnectBrowseButton(string browseButton, string target)
{
ConnectBrowseButton(browseButton, target, "${res:SharpDevelop.FileFilter.AllFiles}|*.*");
}
[Obsolete("Please specify targetNeedsMSBuildEncoding")]
protected void ConnectBrowseButton(string browseButton, string target, string fileFilter)
{
ConnectBrowseButton(browseButton, target, fileFilter, TextBoxEditMode.EditEvaluatedProperty);
}
protected void ConnectBrowseButton(string browseButton, string target, string fileFilter, TextBoxEditMode textBoxEditMode)
{
if (ControlDictionary[browseButton] == null) {
@ -113,23 +103,12 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -113,23 +103,12 @@ namespace ICSharpCode.SharpDevelop.Gui
return;
}
if (ControlDictionary[target] == null) {
MessageService.ShowError(target + " not found!");
return;
}
ControlDictionary[browseButton].Click += new EventHandler(new BrowseButtonEvent(this, target, fileFilter, textBoxEditMode).Event);
ControlDictionary[browseButton].Click += new EventHandler(new BrowseButtonEvent(this, ControlDictionary[target], fileFilter, textBoxEditMode).Event);
}
[Obsolete("Please specify textBoxEditMode")]
protected void ConnectBrowseFolder(string browseButton, string target)
{
ConnectBrowseFolder(browseButton, target, TextBoxEditMode.EditEvaluatedProperty);
}
[Obsolete("Please specify textBoxEditMode")]
protected void ConnectBrowseFolder(string browseButton, string target, string description)
{
ConnectBrowseFolder(browseButton, target, description, TextBoxEditMode.EditEvaluatedProperty);
}
protected void ConnectBrowseFolder(string browseButton, string target, TextBoxEditMode textBoxEditMode)
{
ConnectBrowseFolder(browseButton, target, "${res:Dialog.ProjectOptions.SelectFolderTitle}", textBoxEditMode);
@ -147,21 +126,22 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -147,21 +126,22 @@ namespace ICSharpCode.SharpDevelop.Gui
ControlDictionary[browseButton].Click += new EventHandler(new BrowseFolderEvent(this, target, description, textBoxEditMode).Event);
}
protected void BrowseForFile(Control target, string filter, TextBoxEditMode textBoxEditMode)
{
if (target == null) {
throw new ArgumentNullException("target");
}
new BrowseButtonEvent(this, target, filter, textBoxEditMode).Event(null, null);
}
protected class BrowseButtonEvent
sealed class BrowseButtonEvent
{
AbstractOptionPanel panel;
string target;
Control target;
string filter;
TextBoxEditMode textBoxEditMode;
[Obsolete("specify textBoxEditMode")]
public BrowseButtonEvent(AbstractOptionPanel panel, string target, string filter)
: this(panel, target, filter, TextBoxEditMode.EditEvaluatedProperty)
{
}
public BrowseButtonEvent(AbstractOptionPanel panel, string target, string filter, TextBoxEditMode textBoxEditMode)
public BrowseButtonEvent(AbstractOptionPanel panel, Control target, string filter, TextBoxEditMode textBoxEditMode)
{
this.panel = panel;
this.filter = filter;
@ -174,35 +154,34 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -174,35 +154,34 @@ namespace ICSharpCode.SharpDevelop.Gui
using (OpenFileDialog fdiag = new OpenFileDialog()) {
fdiag.Filter = StringParser.Parse(filter);
fdiag.Multiselect = false;
try {
string initialDir = System.IO.Path.GetDirectoryName(System.IO.Path.Combine(panel.baseDirectory, target.Text));
if (FileUtility.IsValidPath(initialDir) && System.IO.Directory.Exists(initialDir)) {
fdiag.InitialDirectory = initialDir;
}
} catch {}
if(fdiag.ShowDialog() == DialogResult.OK) {
string file = fdiag.FileName;
if (panel.baseDirectory != null) {
file = FileUtility.GetRelativePath(panel.baseDirectory, file);
}
if (textBoxEditMode == TextBoxEditMode.EditEvaluatedProperty) {
panel.ControlDictionary[target].Text = file;
target.Text = file;
} else {
panel.ControlDictionary[target].Text = MSBuildInternals.Escape(file);
target.Text = MSBuildInternals.Escape(file);
}
}
}
}
}
class BrowseFolderEvent
sealed class BrowseFolderEvent
{
AbstractOptionPanel panel;
string target;
string description;
TextBoxEditMode textBoxEditMode;
[Obsolete("Do not use BrowseFolderEvent directly")]
public BrowseFolderEvent(AbstractOptionPanel panel, string target, string description)
: this(panel, target, description, TextBoxEditMode.EditEvaluatedProperty)
{
}
internal BrowseFolderEvent(AbstractOptionPanel panel, string target, string description, TextBoxEditMode textBoxEditMode)
{
this.panel = panel;

2
src/Main/Base/Project/Src/Gui/Dialogs/NewFileDialog.cs

@ -444,7 +444,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -444,7 +444,7 @@ namespace ICSharpCode.SharpDevelop.Gui
fileName = GenerateCurrentFileName();
} else {
fileName = ControlDictionary["fileNameTextBox"].Text.Trim();
if (!FileUtility.IsValidFileName(fileName)
if (!FileUtility.IsValidPath(fileName)
|| fileName.IndexOf(Path.AltDirectorySeparatorChar) >= 0
|| fileName.IndexOf(Path.DirectorySeparatorChar) >= 0)
{

6
src/Main/Base/Project/Src/Gui/Dialogs/NewProjectDialog.cs

@ -263,13 +263,13 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs @@ -263,13 +263,13 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs
string solution = ((TextBox)ControlDictionary["solutionNameTextBox"]).Text.Trim();
string name = ((TextBox)ControlDictionary["nameTextBox"]).Text.Trim();
string location = ((TextBox)ControlDictionary["locationTextBox"]).Text.Trim();
if (!FileUtility.IsValidFileName(solution)
if (!FileUtility.IsValidPath(solution)
|| solution.IndexOf(Path.DirectorySeparatorChar) >= 0
|| solution.IndexOf(Path.AltDirectorySeparatorChar) >= 0
|| !FileUtility.IsValidFileName(name)
|| !FileUtility.IsValidPath(name)
|| name.IndexOf(Path.AltDirectorySeparatorChar) >= 0
|| name.IndexOf(Path.DirectorySeparatorChar) >= 0
|| !FileUtility.IsValidFileName(location))
|| !FileUtility.IsValidPath(location))
{
MessageService.ShowError("${res:ICSharpCode.SharpDevelop.Gui.Dialogs.NewProjectDialog.IllegalProjectNameError}");
return;

4
src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ExternalToolPanel.cs

@ -147,11 +147,11 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels @@ -147,11 +147,11 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
{
List<ExternalTool> newlist = new List<ExternalTool>();
foreach (ExternalTool tool in ((ListBox)ControlDictionary["toolListBox"]).Items) {
if (!FileUtility.IsValidFileName(tool.Command)) {
if (!FileUtility.IsValidPath(tool.Command)) {
MessageService.ShowError(String.Format("The command of tool \"{0}\" is invalid.", tool.MenuCommand));
return false;
}
if ((tool.InitialDirectory != "") && (!FileUtility.IsValidFileName(tool.InitialDirectory))) {
if ((tool.InitialDirectory != "") && (!FileUtility.IsValidPath(tool.InitialDirectory))) {
MessageService.ShowError(String.Format("The working directory of tool \"{0}\" is invalid.", tool.MenuCommand));
return false;
}

2
src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/IDEOptions/ProjectAndSolutionOptionsPanel.cs

@ -35,7 +35,7 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels @@ -35,7 +35,7 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
// check for correct settings
string projectPath = ControlDictionary["projectLocationTextBox"].Text;
if (projectPath.Length > 0) {
if (!FileUtility.IsValidFileName(projectPath)) {
if (!FileUtility.IsValidPath(projectPath)) {
MessageService.ShowError(StringParser.Parse("${res:Dialog.Options.IDEOptions.ProjectAndSolutionOptions.InvalidProjectPathSpecified}"));
return false;
}

2
src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/ApplicationSettings.cs

@ -73,7 +73,7 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels @@ -73,7 +73,7 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
void ApplicationIconComboBoxTextChanged(object sender, EventArgs e)
{
if(FileUtility.IsValidFileName(Get<ComboBox>("applicationIcon").Text))
if(FileUtility.IsValidPath(Get<ComboBox>("applicationIcon").Text))
{
string applicationIcon = Path.Combine(baseDirectory, Get<ComboBox>("applicationIcon").Text);
if (File.Exists(applicationIcon)) {

2
src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/Signing.cs

@ -96,7 +96,7 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels @@ -96,7 +96,7 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
void BrowseKeyFile()
{
keyFile.SelectedIndex = -1;
new BrowseButtonEvent(this, "keyFileComboBox", "${res:SharpDevelop.FileFilter.KeyFiles} (" + KeyFileExtensions + ")|" + KeyFileExtensions + "|${res:SharpDevelop.FileFilter.AllFiles}|*.*", TextBoxEditMode.EditEvaluatedProperty).Event(this, EventArgs.Empty);
BrowseForFile(ControlDictionary["keyFileComboBox"], "${res:SharpDevelop.FileFilter.KeyFiles} (" + KeyFileExtensions + ")|" + KeyFileExtensions + "|${res:SharpDevelop.FileFilter.AllFiles}|*.*", TextBoxEditMode.EditEvaluatedProperty);
}
void CreateKeyFile()

2
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserPad.cs

@ -125,7 +125,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -125,7 +125,7 @@ namespace ICSharpCode.SharpDevelop.Project
return;
}
if (!FileUtility.IsValidFileName(fileName)) {
if (!FileUtility.IsValidPath(fileName)) {
return;
}
lastFileName = fileName;

12
src/Main/Base/Project/Src/Project/ConfigurationGuiHelper.cs

@ -252,18 +252,6 @@ namespace ICSharpCode.SharpDevelop.Project @@ -252,18 +252,6 @@ namespace ICSharpCode.SharpDevelop.Project
#region Bind string to TextBox or ComboBox
static Func<string> GetEmptyString = delegate { return ""; };
[Obsolete("Please explicitly specify textBoxEditMode")]
public ConfigurationGuiBinding BindString(string control, string property)
{
return BindString(controlDictionary[control], property, TextBoxEditMode.EditEvaluatedProperty, GetEmptyString);
}
[Obsolete("Please explicitly specify textBoxEditMode")]
public ConfigurationGuiBinding BindString(Control control, string property)
{
return BindString(control, property, TextBoxEditMode.EditEvaluatedProperty, GetEmptyString);
}
public ConfigurationGuiBinding BindString(string control, string property, TextBoxEditMode textBoxEditMode)
{
return BindString(controlDictionary[control], property, textBoxEditMode, GetEmptyString);

2
src/Main/Base/Project/Src/Project/MSBuildEngineWorker.cs

@ -191,7 +191,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -191,7 +191,7 @@ namespace ICSharpCode.SharpDevelop.Project
{
if (string.Equals(file, activeTaskName, StringComparison.InvariantCultureIgnoreCase)) {
file = "";
} else if (FileUtility.IsValidFileName(file)) {
} else if (FileUtility.IsValidPath(file)) {
bool isShortFileName = file == Path.GetFileNameWithoutExtension(file);
if (worker.CurrentProjectFile != null) {
file = Path.Combine(Path.GetDirectoryName(worker.CurrentProjectFile), file);

2
src/Main/Base/Project/Src/Services/File/FileService.cs

@ -145,7 +145,7 @@ namespace ICSharpCode.SharpDevelop @@ -145,7 +145,7 @@ namespace ICSharpCode.SharpDevelop
/// </summary>
public static bool CheckFileName(string fileName)
{
if (FileUtility.IsValidFileName(fileName))
if (FileUtility.IsValidPath(fileName))
return true;
MessageService.ShowMessage(StringParser.Parse("${res:ICSharpCode.SharpDevelop.Commands.SaveFile.InvalidFileNameError}", new string[,] {{"FileName", fileName}}));
return false;

1
src/Main/Base/Project/Src/Services/ParserService/DomHostCallback.cs

@ -19,7 +19,6 @@ namespace ICSharpCode.SharpDevelop @@ -19,7 +19,6 @@ namespace ICSharpCode.SharpDevelop
{
internal static void Register()
{
HostCallback.GetParseInformation = ParserService.GetParseInformation;
HostCallback.RenameMember = Refactoring.FindReferencesAndRenameHelper.RenameMember;
HostCallback.ShowMessage = MessageService.ShowMessage;

13
src/Main/Base/Project/Src/Services/ParserService/ParserService.cs

@ -688,11 +688,12 @@ namespace ICSharpCode.SharpDevelop @@ -688,11 +688,12 @@ namespace ICSharpCode.SharpDevelop
////////////////////////////////////
public static ArrayList CtrlSpace(int caretLine, int caretColumn, string fileName, string fileContent, ExpressionContext context)
public static ArrayList CtrlSpace(int caretLine, int caretColumn,
string fileName, string fileContent, ExpressionContext context)
{
IResolver resolver = CreateResolver(fileName);
if (resolver != null) {
return resolver.CtrlSpace(caretLine, caretColumn, fileName, fileContent, context);
return resolver.CtrlSpace(caretLine, caretColumn, GetParseInformation(fileName), fileContent, context);
}
return null;
}
@ -707,14 +708,12 @@ namespace ICSharpCode.SharpDevelop @@ -707,14 +708,12 @@ namespace ICSharpCode.SharpDevelop
}
public static ResolveResult Resolve(ExpressionResult expressionResult,
int caretLineNumber,
int caretColumn,
string fileName,
string fileContent)
int caretLineNumber, int caretColumn,
string fileName, string fileContent)
{
IResolver resolver = CreateResolver(fileName);
if (resolver != null) {
return resolver.Resolve(expressionResult, caretLineNumber, caretColumn, fileName, fileContent);
return resolver.Resolve(expressionResult, caretLineNumber, caretColumn, GetParseInformation(fileName), fileContent);
}
return null;
}

8
src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs

@ -256,7 +256,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -256,7 +256,7 @@ namespace ICSharpCode.SharpDevelop.Project
AbstractProject.filesToOpenAfterSolutionLoad.Clear();
try {
string file = GetPreferenceFileName(openSolution.FileName);
if (FileUtility.IsValidFileName(file) && File.Exists(file)) {
if (FileUtility.IsValidPath(file) && File.Exists(file)) {
(openSolution.Preferences as IMementoCapable).SetMemento(Properties.Load(file));
} else {
(openSolution.Preferences as IMementoCapable).SetMemento(new Properties());
@ -292,7 +292,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -292,7 +292,7 @@ namespace ICSharpCode.SharpDevelop.Project
openSolution.ApplySolutionConfigurationAndPlatformToProjects();
foreach (IProject project in openSolution.Projects) {
string file = GetPreferenceFileName(project.FileName);
if (FileUtility.IsValidFileName(file) && File.Exists(file)) {
if (FileUtility.IsValidPath(file) && File.Exists(file)) {
project.SetMemento(Properties.Load(file));
}
}
@ -443,7 +443,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -443,7 +443,7 @@ namespace ICSharpCode.SharpDevelop.Project
Properties memento = (openSolution.Preferences as IMementoCapable).CreateMemento();
string fullFileName = GetPreferenceFileName(openSolution.FileName);
if (FileUtility.IsValidFileName(fullFileName)) {
if (FileUtility.IsValidPath(fullFileName)) {
FileUtility.ObservedSave(new NamedFileOperationDelegate(memento.Save), fullFileName, FileErrorPolicy.Inform);
}
@ -452,7 +452,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -452,7 +452,7 @@ namespace ICSharpCode.SharpDevelop.Project
if (memento == null) continue;
fullFileName = GetPreferenceFileName(project.FileName);
if (FileUtility.IsValidFileName(fullFileName)) {
if (FileUtility.IsValidPath(fullFileName)) {
FileUtility.ObservedSave(new NamedFileOperationDelegate(memento.Save), fullFileName, FileErrorPolicy.Inform);
}
}

2
src/Main/Base/Project/Src/TextEditor/Commands/ClassBookmarkMenuBuilder.cs

@ -102,7 +102,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands @@ -102,7 +102,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
// File name does not match class name
string correctFileName = Path.Combine(Path.GetDirectoryName(c.CompilationUnit.FileName),
c.Name + Path.GetExtension(c.CompilationUnit.FileName));
if (FileUtility.IsValidFileName(correctFileName)
if (FileUtility.IsValidPath(correctFileName)
&& Path.IsPathRooted(correctFileName)
&& !File.Exists(correctFileName))
{

2
src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/OverrideCompletionDataProvider.cs

@ -114,7 +114,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor @@ -114,7 +114,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
public override bool InsertAction(TextArea textArea, char ch)
{
ClassFinder context = new ClassFinder(textArea.MotherTextEditorControl.FileName,
ClassFinder context = new ClassFinder(ParserService.GetParseInformation(textArea.MotherTextEditorControl.FileName),
textArea.Caret.Line + 1, textArea.Caret.Column + 1);
int caretPosition = textArea.Caret.Offset;
LineSegment line = textArea.Document.GetLineSegment(textArea.Caret.Line);

8
src/Main/Base/Project/Src/TextEditor/Gui/Editor/NRefactoryCodeCompletionBinding.cs

@ -111,9 +111,9 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor @@ -111,9 +111,9 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
protected bool InsightRefreshOnComma(SharpDevelopTextAreaControl editor, char ch)
{
// Show MethodInsightWindow or IndexerInsightWindow
NRefactoryResolver r = new NRefactoryResolver(ParserService.CurrentProjectContent, languageProperties);
NRefactoryResolver r = new NRefactoryResolver(languageProperties);
Location cursorLocation = new Location(editor.ActiveTextAreaControl.Caret.Column + 1, editor.ActiveTextAreaControl.Caret.Line + 1);
if (r.Initialize(editor.FileName, cursorLocation.Y, cursorLocation.X)) {
if (r.Initialize(ParserService.GetParseInformation(editor.FileName), cursorLocation.Y, cursorLocation.X)) {
TextReader currentMethod = r.ExtractCurrentMethod(editor.Text);
if (currentMethod != null) {
ILexer lexer = ParserFactory.CreateLexer(language, currentMethod);
@ -262,8 +262,8 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor @@ -262,8 +262,8 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
protected IMember GetCurrentMember(SharpDevelopTextAreaControl editor)
{
ICSharpCode.TextEditor.Caret caret = editor.ActiveTextAreaControl.Caret;
NRefactoryResolver r = new NRefactoryResolver(ParserService.CurrentProjectContent, languageProperties);
if (r.Initialize(editor.FileName, caret.Line + 1, caret.Column + 1)) {
NRefactoryResolver r = new NRefactoryResolver(languageProperties);
if (r.Initialize(ParserService.GetParseInformation(editor.FileName), caret.Line + 1, caret.Column + 1)) {
return r.CallingMember;
} else {
return null;

3
src/Main/Base/Test/CSharpExpressionFinderTests.cs

@ -48,12 +48,11 @@ class Main { @@ -48,12 +48,11 @@ class Main {
[SetUp]
public void Init()
{
HostCallback.GetParseInformation = ParserService.GetParseInformation;
HostCallback.GetCurrentProjectContent = delegate {
return ParserService.CurrentProjectContent;
};
ef = new CSharpExpressionFinder("test.cs");
ef = new CSharpExpressionFinder(delegate { return null; });
}
void FindFull(string location, string expectedExpression, ExpressionContext expectedContext)

11
src/Main/Base/Test/CodeConverterTests.cs

@ -62,17 +62,14 @@ namespace ICSharpCode.SharpDevelop.Tests @@ -62,17 +62,14 @@ namespace ICSharpCode.SharpDevelop.Tests
pc.AddClassToNamespaceList(c);
}
HostCallback.GetParseInformation = delegate(string fileName) {
ParseInformation pi = new ParseInformation();
pi.ValidCompilationUnit = visitor.Cu;
return pi;
};
ParseInformation parseInfo = new ParseInformation();
parseInfo.ValidCompilationUnit = visitor.Cu;
if (sourceLanguage == SupportedLanguage.CSharp) {
CSharpToVBNetConvertVisitor convertVisitor = new CSharpToVBNetConvertVisitor(pc, visitor.Cu.FileName);
CSharpToVBNetConvertVisitor convertVisitor = new CSharpToVBNetConvertVisitor(pc, parseInfo);
parser.CompilationUnit.AcceptVisitor(convertVisitor, null);
} else {
VBNetToCSharpConvertVisitor convertVisitor = new VBNetToCSharpConvertVisitor(pc, visitor.Cu.FileName);
VBNetToCSharpConvertVisitor convertVisitor = new VBNetToCSharpConvertVisitor(pc, parseInfo);
parser.CompilationUnit.AcceptVisitor(convertVisitor, null);
}

48
src/Main/Base/Test/NRefactoryResolverTests.cs

@ -74,31 +74,30 @@ namespace ICSharpCode.SharpDevelop.Tests @@ -74,31 +74,30 @@ namespace ICSharpCode.SharpDevelop.Tests
return visitor.Cu;
}
void AddCompilationUnit(ICompilationUnit parserOutput, string fileName)
ParseInformation AddCompilationUnit(ICompilationUnit parserOutput, string fileName)
{
HostCallback.GetParseInformation = ParserService.GetParseInformation;
ParserService.UpdateParseInformation(parserOutput, fileName, false);
return ParserService.UpdateParseInformation(parserOutput, fileName, false);
}
public ResolveResult Resolve(string program, string expression, int line)
{
AddCompilationUnit(Parse("a.cs", program), "a.cs");
ParseInformation parseInfo = AddCompilationUnit(Parse("a.cs", program), "a.cs");
NRefactoryResolver resolver = new NRefactoryResolver(lastPC, LanguageProperties.CSharp);
NRefactoryResolver resolver = new NRefactoryResolver(LanguageProperties.CSharp);
return resolver.Resolve(new ExpressionResult(expression),
line, 0,
"a.cs",
parseInfo,
program);
}
public ResolveResult ResolveVB(string program, string expression, int line)
{
AddCompilationUnit(ParseVB("a.vb", program), "a.vb");
ParseInformation parseInfo = AddCompilationUnit(ParseVB("a.vb", program), "a.vb");
NRefactoryResolver resolver = new NRefactoryResolver(lastPC, LanguageProperties.VBNet);
NRefactoryResolver resolver = new NRefactoryResolver(LanguageProperties.VBNet);
return resolver.Resolve(new ExpressionResult(expression),
line, 0,
"a.vb",
parseInfo,
program);
}
@ -681,10 +680,10 @@ namespace Root.Child { @@ -681,10 +680,10 @@ namespace Root.Child {
}
}
";
AddCompilationUnit(Parse("a.cs", program), "a.cs");
ParseInformation parseInfo = AddCompilationUnit(Parse("a.cs", program), "a.cs");
NRefactoryResolver resolver = new NRefactoryResolver(lastPC, LanguageProperties.CSharp);
ArrayList m = resolver.CtrlSpace(7, 0, "a.cs", program, ExpressionContext.Default);
NRefactoryResolver resolver = new NRefactoryResolver(LanguageProperties.CSharp);
ArrayList m = resolver.CtrlSpace(7, 0, parseInfo, program, ExpressionContext.Default);
Assert.IsTrue(TypeExists(m, "Beta"), "Meta must exist");
Assert.IsTrue(TypeExists(m, "Alpha"), "Alpha must exist");
}
@ -1059,5 +1058,30 @@ namespace OtherName { class Bla { } } @@ -1059,5 +1058,30 @@ namespace OtherName { class Bla { } }
Assert.AreEqual("Instance", (result as MemberResolveResult).ResolvedMember.Name);
}
#endregion
#region C# 3.0 tests
[Test]
public void SimpleLinqTest()
{
string program = @"using System;
class TestClass {
void Test(string[] input) {
var r = from e in input
where e.StartsWith(""/"")
select e.Trim();
}
}
";
LocalResolveResult lrr = Resolve<LocalResolveResult>(program, "e", 5);
Assert.AreEqual("System.String", lrr.ResolvedType.FullyQualifiedName);
lrr = Resolve<LocalResolveResult>(program, "e", 6);
Assert.AreEqual("System.String", lrr.ResolvedType.FullyQualifiedName);
lrr = Resolve<LocalResolveResult>(program, "r", 7);
Assert.AreEqual("System.Collections.Generic.IEnumerable", lrr.ResolvedType.FullyQualifiedName);
Assert.AreEqual("System.String", lrr.ResolvedType.CastToConstructedReturnType().TypeArguments[0].FullyQualifiedName);
}
#endregion
}
}

2
src/Main/Base/Test/ReflectionLayerTests.cs

@ -159,7 +159,7 @@ namespace ICSharpCode.SharpDevelop.Tests @@ -159,7 +159,7 @@ namespace ICSharpCode.SharpDevelop.Tests
Assert.AreSame(m, m.TypeParameters[0].Method);
Assert.AreEqual("IEquatable", m.TypeParameters[0].Constraints[0].Name);
Assert.AreEqual(1, m.TypeParameters[0].Constraints[0].TypeParameterCount);
Assert.AreEqual(1, m.TypeParameters[0].Constraints[0].TypeArgumentCount);
Assert.AreEqual(1, m.TypeParameters[0].Constraints[0].CastToConstructedReturnType().TypeArguments.Count);
GenericReturnType grt = (GenericReturnType)m.TypeParameters[0].Constraints[0].CastToConstructedReturnType().TypeArguments[0];
Assert.AreSame(m.TypeParameters[0], grt.TypeParameter);

4
src/Main/Base/Test/SearchGenericClassTests.cs

@ -85,10 +85,10 @@ namespace ICSharpCode.SharpDevelop.Tests @@ -85,10 +85,10 @@ namespace ICSharpCode.SharpDevelop.Tests
{
IReturnType type = SearchType(shortName, typeParameterCount);
Assert.AreEqual(fullType, type.FullyQualifiedName);
Assert.AreEqual(typeParameterCount, type.TypeParameterCount);
Assert.AreEqual(typeParameterCount, type.TypeArgumentCount);
type = SearchTypeVB(vbShortName, typeParameterCount);
Assert.AreEqual(fullType, type.FullyQualifiedName);
Assert.AreEqual(typeParameterCount, type.TypeParameterCount);
Assert.AreEqual(typeParameterCount, type.TypeArgumentCount);
}
#endregion

2
src/Main/Base/Test/Utils/MockDefaultReturnType.cs

@ -69,7 +69,7 @@ namespace ICSharpCode.SharpDevelop.Tests.Utils @@ -69,7 +69,7 @@ namespace ICSharpCode.SharpDevelop.Tests.Utils
}
}
public int TypeParameterCount {
public int TypeArgumentCount {
get {
throw new NotImplementedException();
}

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

@ -34,7 +34,6 @@ End Class @@ -34,7 +34,6 @@ End Class
[SetUp]
public void Init()
{
HostCallback.GetParseInformation = ParserService.GetParseInformation;
HostCallback.GetCurrentProjectContent = delegate {
return ParserService.CurrentProjectContent;
};

10
src/Main/Core/Project/Src/Services/FileUtility/FileUtility.cs

@ -338,9 +338,9 @@ namespace ICSharpCode.Core @@ -338,9 +338,9 @@ namespace ICSharpCode.Core
public static int MaxPathLength = 260;
/// <summary>
/// This method checks the file fileName if it is valid.
/// This method checks if a path (full or relative) is valid.
/// </summary>
public static bool IsValidFileName(string fileName)
public static bool IsValidPath(string fileName)
{
// Fixme: 260 is the hardcoded maximal length for a path on my Windows XP system
// I can't find a .NET property or method for determining this variable.
@ -390,7 +390,7 @@ namespace ICSharpCode.Core @@ -390,7 +390,7 @@ namespace ICSharpCode.Core
/// </summary>
public static bool IsValidDirectoryName(string name)
{
if (!IsValidFileName(name)) {
if (!IsValidPath(name)) {
return false;
}
if (name.IndexOfAny(new char[]{Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar}) >= 0) {
@ -489,7 +489,7 @@ namespace ICSharpCode.Core @@ -489,7 +489,7 @@ namespace ICSharpCode.Core
// Observe SAVE functions
public static FileOperationResult ObservedSave(FileOperationDelegate saveFile, string fileName, string message, FileErrorPolicy policy)
{
System.Diagnostics.Debug.Assert(IsValidFileName(fileName));
System.Diagnostics.Debug.Assert(IsValidPath(fileName));
try {
saveFile();
OnFileSaved(new FileNameEventArgs(fileName));
@ -534,7 +534,7 @@ namespace ICSharpCode.Core @@ -534,7 +534,7 @@ namespace ICSharpCode.Core
public static FileOperationResult ObservedSave(NamedFileOperationDelegate saveFileAs, string fileName, string message, FileErrorPolicy policy)
{
System.Diagnostics.Debug.Assert(IsValidFileName(fileName));
System.Diagnostics.Debug.Assert(IsValidPath(fileName));
try {
string directory = Path.GetDirectoryName(fileName);
if (!Directory.Exists(directory)) {

8
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CSharp/ExpressionFinder.cs

@ -15,11 +15,11 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp @@ -15,11 +15,11 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp
/// </summary>
public class CSharpExpressionFinder : IExpressionFinder
{
string fileName;
Func<ParseInformation> parseInformationSource;
public CSharpExpressionFinder(string fileName)
public CSharpExpressionFinder(Func<ParseInformation> parseInformationSource)
{
this.fileName = fileName;
this.parseInformationSource = parseInformationSource ?? delegate { return null; };
}
#region Capture Context
@ -72,7 +72,7 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp @@ -72,7 +72,7 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp
nonGenericClassName = className;
genericPart = null;
}
ClassFinder finder = new ClassFinder(fileName, text, typeStart);
ClassFinder finder = new ClassFinder(parseInformationSource(), text, typeStart);
IReturnType t = finder.SearchType(nonGenericClassName, typeParameterCount);
IClass c = (t != null) ? t.GetUnderlyingClass() : null;
if (c != null) {

11
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ClassFinder.cs

@ -38,7 +38,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -38,7 +38,7 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
public ClassFinder(string fileName, string fileContent, int offset)
public ClassFinder(ParseInformation parseInfo, string fileContent, int offset)
{
caretLine = 0;
caretColumn = 0;
@ -50,15 +50,15 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -50,15 +50,15 @@ namespace ICSharpCode.SharpDevelop.Dom
caretColumn++;
}
}
Init(fileName);
Init(parseInfo);
}
public ClassFinder(string fileName, int caretLineNumber, int caretColumn)
public ClassFinder(ParseInformation parseInfo, int caretLineNumber, int caretColumn)
{
this.caretLine = caretLineNumber;
this.caretColumn = caretColumn;
Init(fileName);
Init(parseInfo);
}
public ClassFinder(IMember classMember)
@ -83,9 +83,8 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -83,9 +83,8 @@ namespace ICSharpCode.SharpDevelop.Dom
{
}
void Init(string fileName)
void Init(ParseInformation parseInfo)
{
ParseInformation parseInfo = HostCallback.GetParseInformation(fileName);
if (parseInfo != null) {
cu = parseInfo.MostRecentCompilationUnit;
}

7
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/HostCallback.cs

@ -26,13 +26,6 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -26,13 +26,6 @@ namespace ICSharpCode.SharpDevelop.Dom
LoggingService.Info(message);
};
/// <summary>
/// Get parse information by file name.
/// </summary>
public static Func<string, ParseInformation> GetParseInformation = delegate {
throw new NotImplementedException("GetParseInformation was not implemented by the host.");
};
/// <summary>
/// Get the current project content.
/// </summary>

4
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/IResolver.cs

@ -22,9 +22,9 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -22,9 +22,9 @@ namespace ICSharpCode.SharpDevelop.Dom
ResolveResult Resolve(ExpressionResult expressionResult,
int caretLineNumber,
int caretColumn,
string fileName,
ParseInformation parseInfo,
string fileContent);
ArrayList CtrlSpace(int caretLine, int caretColumn, string fileName, string fileContent, ExpressionContext context);
ArrayList CtrlSpace(int caretLine, int caretColumn, ParseInformation parseInfo, string fileContent, ExpressionContext context);
}
}

2
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/AbstractReturnType.cs

@ -21,7 +21,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -21,7 +21,7 @@ namespace ICSharpCode.SharpDevelop.Dom
public abstract List<IField> GetFields();
public abstract List<IEvent> GetEvents();
public virtual int TypeParameterCount {
public virtual int TypeArgumentCount {
get {
return 0;
}

2
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/CombinedReturnType.cs

@ -142,7 +142,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -142,7 +142,7 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
public override int TypeParameterCount {
public override int TypeArgumentCount {
get {
return 0;
}

4
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/DefaultReturnType.cs

@ -25,7 +25,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -25,7 +25,7 @@ namespace ICSharpCode.SharpDevelop.Dom
IClass c2 = rt2.GetUnderlyingClass();
if (c1 == null && c2 == null) {
// guess if the classes are equal
return rt1.FullyQualifiedName == rt2.FullyQualifiedName && rt1.TypeParameterCount == rt2.TypeParameterCount;
return rt1.FullyQualifiedName == rt2.FullyQualifiedName && rt1.TypeArgumentCount == rt2.TypeArgumentCount;
} else {
if (c1 == c2)
return true;
@ -49,7 +49,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -49,7 +49,7 @@ namespace ICSharpCode.SharpDevelop.Dom
return c.FullyQualifiedName;
}
public override int TypeParameterCount {
public override int TypeArgumentCount {
get {
return c.TypeParameters.Count;
}

12
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/GetClassReturnType.cs

@ -18,12 +18,12 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -18,12 +18,12 @@ namespace ICSharpCode.SharpDevelop.Dom
IProjectContent content;
string fullName;
string shortName;
int typeParameterCount;
int typeArgumentCount;
public GetClassReturnType(IProjectContent content, string fullName, int typeParameterCount)
{
this.content = content;
this.typeParameterCount = typeParameterCount;
this.typeArgumentCount = typeParameterCount;
SetFullyQualifiedName(fullName);
}
@ -33,9 +33,9 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -33,9 +33,9 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
public override int TypeParameterCount {
public override int TypeArgumentCount {
get {
return typeParameterCount;
return typeArgumentCount;
}
}
@ -50,12 +50,12 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -50,12 +50,12 @@ namespace ICSharpCode.SharpDevelop.Dom
public override int GetHashCode()
{
return content.GetHashCode() ^ fullName.GetHashCode() ^ (typeParameterCount * 5);
return content.GetHashCode() ^ fullName.GetHashCode() ^ (typeArgumentCount * 5);
}
public override IReturnType BaseType {
get {
IClass c = content.GetClass(fullName, typeParameterCount);
IClass c = content.GetClass(fullName, typeArgumentCount);
return (c != null) ? c.DefaultReturnType : null;
}
}

4
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/ProxyReturnType.cs

@ -99,10 +99,10 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -99,10 +99,10 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
public virtual int TypeParameterCount {
public virtual int TypeArgumentCount {
get {
IReturnType baseType = BaseType;
int tmp = (baseType != null && TryEnter()) ? baseType.TypeParameterCount : 0;
int tmp = (baseType != null && TryEnter()) ? baseType.TypeArgumentCount : 0;
busy = false;
return tmp;
}

11
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Interfaces/IReturnType.cs

@ -63,9 +63,10 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -63,9 +63,10 @@ namespace ICSharpCode.SharpDevelop.Dom
}
/// <summary>
/// Gets the count of type parameters the target class should have.
/// Gets the number of type parameters the target class should have
/// / the number of type arguments specified by this type reference.
/// </summary>
int TypeParameterCount {
int TypeArgumentCount {
get;
}
@ -78,7 +79,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -78,7 +79,7 @@ namespace ICSharpCode.SharpDevelop.Dom
/// <summary>
/// Gets all methods that can be called on this return type.
/// </summary>
List<IMethod> GetMethods();
List<IMethod> GetMethods();
/// <summary>
/// Gets all properties that can be called on this return type.
@ -88,12 +89,12 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -88,12 +89,12 @@ namespace ICSharpCode.SharpDevelop.Dom
/// <summary>
/// Gets all fields that can be called on this return type.
/// </summary>
List<IField> GetFields();
List<IField> GetFields();
/// <summary>
/// Gets all events that can be called on this return type.
/// </summary>
List<IEvent> GetEvents();
List<IEvent> GetEvents();
/// <summary>

22
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/CSharpToVBNetConvertVisitor.cs

@ -18,12 +18,12 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -18,12 +18,12 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
public class CSharpToVBNetConvertVisitor : CSharpConstructsVisitor
{
NRefactoryResolver _resolver;
string _fileName;
ParseInformation _parseInfo;
public CSharpToVBNetConvertVisitor(IProjectContent pc, string fileName)
public CSharpToVBNetConvertVisitor(IProjectContent pc, ParseInformation parseInfo)
{
_resolver = new NRefactoryResolver(pc, LanguageProperties.CSharp);
_fileName = fileName;
_resolver = new NRefactoryResolver(LanguageProperties.CSharp);
_parseInfo = parseInfo;
}
public override object VisitCompilationUnit(CompilationUnit compilationUnit, object data)
@ -38,16 +38,26 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -38,16 +38,26 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
{
// Initialize resolver for method:
if (!methodDeclaration.Body.IsNull) {
if (_resolver.Initialize(_fileName, methodDeclaration.Body.StartLocation.Y, methodDeclaration.Body.StartLocation.X)) {
if (_resolver.Initialize(_parseInfo, methodDeclaration.Body.StartLocation.Y, methodDeclaration.Body.StartLocation.X)) {
_resolver.RunLookupTableVisitor(methodDeclaration);
}
}
return base.VisitMethodDeclaration(methodDeclaration, data);
}
public override object VisitConstructorDeclaration(ConstructorDeclaration constructorDeclaration, object data)
{
if (!constructorDeclaration.Body.IsNull) {
if (_resolver.Initialize(_parseInfo, constructorDeclaration.Body.StartLocation.Y, constructorDeclaration.Body.StartLocation.X)) {
_resolver.RunLookupTableVisitor(constructorDeclaration);
}
}
return base.VisitConstructorDeclaration(constructorDeclaration, data);
}
public override object VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration, object data)
{
if (_resolver.Initialize(_fileName, propertyDeclaration.BodyStart.Y, propertyDeclaration.BodyStart.X)) {
if (_resolver.Initialize(_parseInfo, propertyDeclaration.BodyStart.Y, propertyDeclaration.BodyStart.X)) {
_resolver.RunLookupTableVisitor(propertyDeclaration);
}
return base.VisitPropertyDeclaration(propertyDeclaration, data);

45
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryResolver.cs

@ -25,7 +25,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -25,7 +25,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
ICSharpCode.NRefactory.Visitors.LookupTableVisitor lookupTableVisitor;
IProjectContent projectContent;
NR.SupportedLanguage language;
readonly NR.SupportedLanguage language;
int caretLine;
int caretColumn;
@ -77,7 +77,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -77,7 +77,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
}
}
LanguageProperties languageProperties;
readonly LanguageProperties languageProperties;
public LanguageProperties LanguageProperties {
get {
@ -85,14 +85,11 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -85,14 +85,11 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
}
}
public NRefactoryResolver(IProjectContent projectContent, LanguageProperties languageProperties)
public NRefactoryResolver(LanguageProperties languageProperties)
{
if (projectContent == null)
throw new ArgumentNullException("projectContent");
if (languageProperties == null)
throw new ArgumentNullException("languageProperties");
this.languageProperties = languageProperties;
this.projectContent = projectContent;
if (languageProperties is LanguageProperties.CSharpProperties) {
language = NR.SupportedLanguage.CSharp;
} else if (languageProperties is LanguageProperties.VBNetProperties) {
@ -145,24 +142,22 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -145,24 +142,22 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
return expression;
}
public bool Initialize(string fileName, int caretLineNumber, int caretColumn)
public bool Initialize(ParseInformation parseInfo, int caretLineNumber, int caretColumn)
{
this.caretLine = caretLineNumber;
this.caretColumn = caretColumn;
ParseInformation parseInfo = HostCallback.GetParseInformation(fileName);
if (parseInfo == null) {
return false;
}
cu = parseInfo.MostRecentCompilationUnit;
if (cu != null) {
callingClass = cu.GetInnermostClass(caretLine, caretColumn);
if (cu.ProjectContent != null) {
this.ProjectContent = cu.ProjectContent;
}
if (cu == null || cu.ProjectContent == null) {
return false;
}
this.ProjectContent = cu.ProjectContent;
callingClass = cu.GetInnermostClass(caretLine, caretColumn);
callingMember = GetCurrentMember();
return true;
}
@ -170,12 +165,12 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -170,12 +165,12 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
public ResolveResult Resolve(ExpressionResult expressionResult,
int caretLineNumber,
int caretColumn,
string fileName,
ParseInformation parseInfo,
string fileContent)
{
string expression = GetFixedExpression(expressionResult);
if (!Initialize(fileName, caretLineNumber, caretColumn))
if (!Initialize(parseInfo, caretLineNumber, caretColumn))
return null;
Expression expr = null;
@ -1028,8 +1023,10 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -1028,8 +1023,10 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
return c2;
}
public ArrayList CtrlSpace(int caretLine, int caretColumn, string fileName, string fileContent, ExpressionContext context)
public ArrayList CtrlSpace(int caretLine, int caretColumn, ParseInformation parseInfo, string fileContent, ExpressionContext context)
{
if (!Initialize(parseInfo, caretLine, caretColumn))
return null;
ArrayList result = new ArrayList();
if (language == NR.SupportedLanguage.VBNet) {
foreach (KeyValuePair<string, string> pair in TypeReference.PrimitiveTypesVB) {
@ -1046,23 +1043,9 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -1046,23 +1043,9 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
if (c != null) result.Add(c);
}
}
ParseInformation parseInfo = HostCallback.GetParseInformation(fileName);
if (parseInfo == null) {
return null;
}
this.caretLine = caretLine;
this.caretColumn = caretColumn;
lookupTableVisitor = new LookupTableVisitor(language);
cu = parseInfo.MostRecentCompilationUnit;
if (cu != null) {
callingClass = cu.GetInnermostClass(caretLine, caretColumn);
}
callingMember = GetCurrentMember();
if (callingMember != null) {
CompilationUnit parsedCu = ParseCurrentMemberAsCompilationUnit(fileContent);
if (parsedCu != null) {

14
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/VBNetToCSharpConvertVisitor.cs

@ -21,12 +21,12 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -21,12 +21,12 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
// Adds using statements for the default usings
NRefactoryResolver _resolver;
string _fileName;
ParseInformation _parseInfo;
public VBNetToCSharpConvertVisitor(IProjectContent pc, string fileName)
public VBNetToCSharpConvertVisitor(IProjectContent pc, ParseInformation parseInfo)
{
_resolver = new NRefactoryResolver(pc, LanguageProperties.VBNet);
_fileName = fileName;
_resolver = new NRefactoryResolver(LanguageProperties.VBNet);
_parseInfo = parseInfo;
}
public override object VisitCompilationUnit(CompilationUnit compilationUnit, object data)
@ -47,7 +47,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -47,7 +47,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
{
// Initialize resolver for method:
if (!methodDeclaration.Body.IsNull) {
if (_resolver.Initialize(_fileName, methodDeclaration.Body.StartLocation.Line, methodDeclaration.Body.StartLocation.Column)) {
if (_resolver.Initialize(_parseInfo, methodDeclaration.Body.StartLocation.Line, methodDeclaration.Body.StartLocation.Column)) {
_resolver.RunLookupTableVisitor(methodDeclaration);
}
}
@ -57,7 +57,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -57,7 +57,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
public override object VisitConstructorDeclaration(ConstructorDeclaration constructorDeclaration, object data)
{
if (!constructorDeclaration.Body.IsNull) {
if (_resolver.Initialize(_fileName, constructorDeclaration.Body.StartLocation.Line, constructorDeclaration.Body.StartLocation.Column)) {
if (_resolver.Initialize(_parseInfo, constructorDeclaration.Body.StartLocation.Line, constructorDeclaration.Body.StartLocation.Column)) {
_resolver.RunLookupTableVisitor(constructorDeclaration);
}
}
@ -66,7 +66,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -66,7 +66,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
public override object VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration, object data)
{
if (_resolver.Initialize(_fileName, propertyDeclaration.BodyStart.Line, propertyDeclaration.BodyStart.Column)) {
if (_resolver.Initialize(_parseInfo, propertyDeclaration.BodyStart.Line, propertyDeclaration.BodyStart.Column)) {
_resolver.RunLookupTableVisitor(propertyDeclaration);
}
return base.VisitPropertyDeclaration(propertyDeclaration, data);

4
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/DefaultProjectContent.cs

@ -821,7 +821,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -821,7 +821,7 @@ namespace ICSharpCode.SharpDevelop.Dom
foreach (IUsing u in request.CurrentCompilationUnit.Usings) {
if (u != null) {
foreach (IReturnType r in u.SearchType(name, request.TypeParameterCount)) {
if (r.TypeParameterCount == request.TypeParameterCount) {
if (r.TypeArgumentCount == request.TypeParameterCount) {
return new SearchTypeResult(r, u);
} else {
fallbackResult = new SearchTypeResult(r, u);
@ -832,7 +832,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -832,7 +832,7 @@ namespace ICSharpCode.SharpDevelop.Dom
}
if (defaultImports != null) {
foreach (IReturnType r in defaultImports.SearchType(name, request.TypeParameterCount)) {
if (r.TypeParameterCount == request.TypeParameterCount) {
if (r.TypeArgumentCount == request.TypeParameterCount) {
return new SearchTypeResult(r, defaultImports);
} else {
fallbackResult = new SearchTypeResult(r, defaultImports);

6
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/ProjectContentRegistry.cs

@ -216,12 +216,6 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -216,12 +216,6 @@ namespace ICSharpCode.SharpDevelop.Dom
pc.Dispose();
}
[Obsolete("Use DomAssemblyName instead of AssemblyName")]
public IProjectContent GetExistingProjectContent(AssemblyName assembly)
{
return GetExistingProjectContent(assembly.FullName, assembly.FullName);
}
public IProjectContent GetExistingProjectContent(DomAssemblyName assembly)
{
return GetExistingProjectContent(assembly.FullName, assembly.FullName);

11
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/ReflectionProjectContent.cs

@ -35,11 +35,6 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -35,11 +35,6 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
[Obsolete("This property always returns an empty array! Use ReferencedAssemblyNames instead!")]
public AssemblyName[] ReferencedAssemblies {
get { return new AssemblyName[0]; }
}
/// <summary>
/// Gets the list of assembly names referenced by this project content.
/// </summary>
@ -88,12 +83,6 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -88,12 +83,6 @@ namespace ICSharpCode.SharpDevelop.Dom
InitializeSpecialClasses();
}
[Obsolete("Use DomAssemblyName instead of AssemblyName!")]
public ReflectionProjectContent(string assemblyFullName, string assemblyLocation, AssemblyName[] referencedAssemblies, ProjectContentRegistry registry)
: this(assemblyFullName, assemblyLocation, DomAssemblyName.Convert(referencedAssemblies), registry)
{
}
public ReflectionProjectContent(string assemblyFullName, string assemblyLocation, DomAssemblyName[] referencedAssemblies, ProjectContentRegistry registry)
{
if (assemblyFullName == null)

2
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ReflectionLayer/DomPersistence.cs

@ -201,7 +201,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -201,7 +201,7 @@ namespace ICSharpCode.SharpDevelop.Dom
public ClassNameTypeCountPair(IReturnType rt) {
this.ClassName = rt.FullyQualifiedName;
this.TypeParameterCount = (byte)rt.TypeParameterCount;
this.TypeParameterCount = (byte)rt.TypeArgumentCount;
}
public override bool Equals(object obj) {

Loading…
Cancel
Save