Browse Source

Python addin no longer using obsolete ParseInformation properties.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@6375 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Matt Ward 16 years ago
parent
commit
53c8213097
  1. 83
      src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonResolverContext.cs

83
src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonResolverContext.cs

@ -14,8 +14,7 @@ namespace ICSharpCode.PythonBinding
{ {
public class PythonResolverContext public class PythonResolverContext
{ {
ICompilationUnit mostRecentCompilationUnit; ICompilationUnit compilationUnit;
ICompilationUnit bestCompilationUnit;
IProjectContent projectContent; IProjectContent projectContent;
IClass callingClass; IClass callingClass;
@ -27,19 +26,22 @@ namespace ICSharpCode.PythonBinding
void GetCompilationUnits(ParseInformation parseInfo) void GetCompilationUnits(ParseInformation parseInfo)
{ {
mostRecentCompilationUnit = GetCompilationUnit(parseInfo, true); compilationUnit = GetCompilationUnit(parseInfo);
bestCompilationUnit = GetCompilationUnit(parseInfo, false);
} }
void GetProjectContent() ICompilationUnit GetCompilationUnit(ParseInformation parseInfo)
{ {
if (mostRecentCompilationUnit != null) { if (parseInfo != null) {
projectContent = mostRecentCompilationUnit.ProjectContent; return parseInfo.CompilationUnit;
} }
return null;
} }
public ICompilationUnit MostRecentCompilationUnit { void GetProjectContent()
get { return mostRecentCompilationUnit; } {
if (compilationUnit != null) {
projectContent = compilationUnit.ProjectContent;
}
} }
public IProjectContent ProjectContent { public IProjectContent ProjectContent {
@ -85,56 +87,21 @@ namespace ICSharpCode.PythonBinding
/// </summary> /// </summary>
public bool GetCallingMember(DomRegion region) public bool GetCallingMember(DomRegion region)
{ {
if (mostRecentCompilationUnit == null) { if (compilationUnit == null) {
return false; return false;
} }
if (projectContent != null) { if (projectContent != null) {
callingClass = GetCallingClass(mostRecentCompilationUnit, bestCompilationUnit, region); callingClass = GetCallingClass(region);
return true; return true;
} }
return false; return false;
} }
/// <summary>
/// Gets the compilation unit for the specified parse information.
/// </summary>
public ICompilationUnit GetCompilationUnit(ParseInformation parseInfo, bool mostRecent)
{
if (parseInfo != null) {
if (mostRecent) {
return parseInfo.MostRecentCompilationUnit;
}
return parseInfo.BestCompilationUnit;
}
return null;
}
/// <summary>
/// Gets the calling class at the specified.
/// </summary>
IClass GetCallingClass(ICompilationUnit mostRecentCompilationUnit, ICompilationUnit bestCompilationUnit, DomRegion region)
{
// Try the most recent compilation unit first
IClass c = GetCallingClass(mostRecentCompilationUnit, region);
if (c != null) {
return c;
}
// Try the best compilation unit.
if (bestCompilationUnit != null && bestCompilationUnit.ProjectContent != null) {
IClass oldClass = GetCallingClass(bestCompilationUnit, region);
if (oldClass != null) {
return oldClass;
}
}
return null;
}
/// <summary> /// <summary>
/// Gets the calling class at the specified line and column. /// Gets the calling class at the specified line and column.
/// </summary> /// </summary>
IClass GetCallingClass(ICompilationUnit compilationUnit, DomRegion region) IClass GetCallingClass(DomRegion region)
{ {
if (compilationUnit.Classes.Count > 0) { if (compilationUnit.Classes.Count > 0) {
return compilationUnit.Classes[0]; return compilationUnit.Classes[0];
@ -154,13 +121,13 @@ namespace ICSharpCode.PythonBinding
public List<ICompletionEntry> GetImportedTypes() public List<ICompletionEntry> GetImportedTypes()
{ {
List<ICompletionEntry> types = new List<ICompletionEntry>(); List<ICompletionEntry> types = new List<ICompletionEntry>();
CtrlSpaceResolveHelper.AddImportedNamespaceContents(types, mostRecentCompilationUnit, callingClass); CtrlSpaceResolveHelper.AddImportedNamespaceContents(types, compilationUnit, callingClass);
return types; return types;
} }
public bool HasImport(string name) public bool HasImport(string name)
{ {
foreach (IUsing u in mostRecentCompilationUnit.UsingScope.Usings) { foreach (IUsing u in compilationUnit.UsingScope.Usings) {
foreach (string ns in u.Usings) { foreach (string ns in u.Usings) {
if (name == ns) { if (name == ns) {
return true; return true;
@ -180,8 +147,10 @@ namespace ICSharpCode.PythonBinding
{ {
foreach (object obj in GetImportedTypes()) { foreach (object obj in GetImportedTypes()) {
IClass c = obj as IClass; IClass c = obj as IClass;
if ((c != null) && IsSameClassName(name, c.Name)) { if (c != null) {
return c; if (IsSameClassName(name, c.Name)) {
return c;
}
} }
} }
return null; return null;
@ -200,7 +169,7 @@ namespace ICSharpCode.PythonBinding
/// </summary> /// </summary>
public string GetModuleForImportedName(string name) public string GetModuleForImportedName(string name)
{ {
foreach (IUsing u in mostRecentCompilationUnit.UsingScope.Usings) { foreach (IUsing u in compilationUnit.UsingScope.Usings) {
PythonFromImport pythonFromImport = u as PythonFromImport; PythonFromImport pythonFromImport = u as PythonFromImport;
if (pythonFromImport != null) { if (pythonFromImport != null) {
if (pythonFromImport.IsImportedName(name)) { if (pythonFromImport.IsImportedName(name)) {
@ -216,7 +185,7 @@ namespace ICSharpCode.PythonBinding
/// </summary> /// </summary>
public string UnaliasImportedName(string name) public string UnaliasImportedName(string name)
{ {
foreach (IUsing u in mostRecentCompilationUnit.UsingScope.Usings) { foreach (IUsing u in compilationUnit.UsingScope.Usings) {
PythonFromImport pythonFromImport = u as PythonFromImport; PythonFromImport pythonFromImport = u as PythonFromImport;
if (pythonFromImport != null) { if (pythonFromImport != null) {
string actualName = pythonFromImport.GetOriginalNameForAlias(name); string actualName = pythonFromImport.GetOriginalNameForAlias(name);
@ -233,7 +202,7 @@ namespace ICSharpCode.PythonBinding
/// </summary> /// </summary>
public string UnaliasImportedModuleName(string name) public string UnaliasImportedModuleName(string name)
{ {
foreach (IUsing u in mostRecentCompilationUnit.UsingScope.Usings) { foreach (IUsing u in compilationUnit.UsingScope.Usings) {
PythonImport pythonImport = u as PythonImport; PythonImport pythonImport = u as PythonImport;
if (pythonImport != null) { if (pythonImport != null) {
string actualName = pythonImport.GetOriginalNameForAlias(name); string actualName = pythonImport.GetOriginalNameForAlias(name);
@ -248,7 +217,7 @@ namespace ICSharpCode.PythonBinding
public string[] GetModulesThatImportEverything() public string[] GetModulesThatImportEverything()
{ {
List<string> modules = new List<string>(); List<string> modules = new List<string>();
foreach (IUsing u in mostRecentCompilationUnit.UsingScope.Usings) { foreach (IUsing u in compilationUnit.UsingScope.Usings) {
PythonFromImport pythonFromImport = u as PythonFromImport; PythonFromImport pythonFromImport = u as PythonFromImport;
if (pythonFromImport != null) { if (pythonFromImport != null) {
if (pythonFromImport.ImportsEverything) { if (pythonFromImport.ImportsEverything) {
@ -295,7 +264,7 @@ namespace ICSharpCode.PythonBinding
public bool HasDottedImportNameThatStartsWith(string importName) public bool HasDottedImportNameThatStartsWith(string importName)
{ {
string dottedImportNameStartsWith = importName + "."; string dottedImportNameStartsWith = importName + ".";
foreach (IUsing u in mostRecentCompilationUnit.UsingScope.Usings) { foreach (IUsing u in compilationUnit.UsingScope.Usings) {
foreach (string ns in u.Usings) { foreach (string ns in u.Usings) {
if (ns.StartsWith(dottedImportNameStartsWith)) { if (ns.StartsWith(dottedImportNameStartsWith)) {
return true; return true;

Loading…
Cancel
Save