Browse Source

Boo implicitly references System.dll and Boo.Lang.dll.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@543 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 21 years ago
parent
commit
4aa100ffdf
  1. 1
      src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.csproj
  2. 37
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooLanguageProperties.cs
  3. 15
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooProject.cs
  4. 1
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/BooResolver.cs
  5. 2
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ConvertVisitor.cs
  6. 12
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ResolveVisitor.cs
  7. 1
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Templates/ConsoleProject.xpt
  8. 1
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Templates/FormsProject.xpt
  9. 1
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Templates/Library.xpt
  10. 18
      src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs
  11. 11
      src/Main/Base/Project/Src/Services/ParserService/ParseProjectContent.cs

1
src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.csproj

@ -62,6 +62,7 @@
<Compile Include="Src\CodeCompletion\BooResolver.cs" /> <Compile Include="Src\CodeCompletion\BooResolver.cs" />
<Compile Include="Src\CodeCompletion\ResolveVisitor.cs" /> <Compile Include="Src\CodeCompletion\ResolveVisitor.cs" />
<Compile Include="Src\CodeCompletion\CompletionBinding.cs" /> <Compile Include="Src\CodeCompletion\CompletionBinding.cs" />
<Compile Include="Src\BooLanguageProperties.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Content Include="BooBinding.addin"> <Content Include="BooBinding.addin">

37
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooLanguageProperties.cs

@ -0,0 +1,37 @@
// <file>
// <copyright see="prj:///doc/copyright.txt">2002-2005 AlphaSierraPapa</copyright>
// <license see="prj:///doc/license.txt">GNU General Public License</license>
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
// <version>$Revision$</version>
// </file>
using System;
using ICSharpCode.SharpDevelop.Dom;
namespace Grunwald.BooBinding
{
public class BooLanguageProperties : LanguageProperties
{
public readonly static BooLanguageProperties Instance = new BooLanguageProperties();
public BooLanguageProperties() : base(StringComparer.InvariantCulture) {}
public override bool ImportNamespaces {
get {
return true;
}
}
public override bool ImportModules {
get {
return true;
}
}
public override bool CanImportClasses {
get {
return true;
}
}
}
}

15
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooProject.cs

@ -7,6 +7,7 @@
using System; using System;
using System.ComponentModel; using System.ComponentModel;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project; using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.Core; using ICSharpCode.Core;
@ -19,6 +20,7 @@ namespace Grunwald.BooBinding
{ {
this.Name = projectName; this.Name = projectName;
Language = "Boo"; Language = "Boo";
LanguageProperties = BooLanguageProperties.Instance;
SetupProject(fileName); SetupProject(fileName);
IdGuid = BaseConfiguration["ProjectGuid"]; IdGuid = BaseConfiguration["ProjectGuid"];
} }
@ -26,6 +28,7 @@ namespace Grunwald.BooBinding
public BooProject(ProjectCreateInformation info) public BooProject(ProjectCreateInformation info)
{ {
Language = "Boo"; Language = "Boo";
LanguageProperties = BooLanguageProperties.Instance;
Create(info); Create(info);
imports.Add("$(BooBinPath)\\MsBuild.Boo.Targets"); imports.Add("$(BooBinPath)\\MsBuild.Boo.Targets");
} }
@ -35,6 +38,18 @@ namespace Grunwald.BooBinding
return new BooLanguageBinding().CanCompile(fileName); return new BooLanguageBinding().CanCompile(fileName);
} }
public override ParseProjectContent CreateProjectContent()
{
ParseProjectContent pc = base.CreateProjectContent();
ReferenceProjectItem systemItem = new ReferenceProjectItem(this, "System");
pc.ReferencedContents.Add(ProjectContentRegistry.GetProjectContentForReference(systemItem));
ReferenceProjectItem booLangItem = new ReferenceProjectItem(this, typeof(Boo.Lang.Builtins).Assembly.Location);
pc.ReferencedContents.Add(ProjectContentRegistry.GetProjectContentForReference(booLangItem));
pc.DefaultImports = new DefaultUsing(pc);
pc.DefaultImports.Usings.Add("Boo.Lang.Builtins");
return pc;
}
[Browsable(false)] [Browsable(false)]
public override IAmbience Ambience { public override IAmbience Ambience {
get { get {

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

@ -157,6 +157,7 @@ namespace Grunwald.BooBinding.CodeCompletion
{ {
if (!Initialize(fileName, caretLine, caretColumn)) if (!Initialize(fileName, caretLine, caretColumn))
return null; return null;
ArrayList result = GetImportedNamespaceContents(); ArrayList result = GetImportedNamespaceContents();
NRResolver.AddContentsFromCalling(result, callingClass, callingMember); NRResolver.AddContentsFromCalling(result, callingClass, callingMember);

2
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ConvertVisitor.cs

@ -203,7 +203,7 @@ namespace Grunwald.BooBinding.CodeCompletion
} else if (reference is AST.SimpleTypeReference) { } else if (reference is AST.SimpleTypeReference) {
string name = ((AST.SimpleTypeReference)reference).Name; string name = ((AST.SimpleTypeReference)reference).Name;
if (BooAmbience.ReverseTypeConversionTable.ContainsKey(name)) if (BooAmbience.ReverseTypeConversionTable.ContainsKey(name))
return new GetClassReturnType(ProjectContentRegistry.Mscorlib, BooAmbience.ReverseTypeConversionTable[name], 0); return new GetClassReturnType(projectContent, BooAmbience.ReverseTypeConversionTable[name], 0);
return new SearchClassReturnType(projectContent, callingClass, caretLine, caretColumn, return new SearchClassReturnType(projectContent, callingClass, caretLine, caretColumn,
name, 0); name, 0);
} else if (reference is AST.CallableTypeReference) { } else if (reference is AST.CallableTypeReference) {

12
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ResolveVisitor.cs

@ -168,17 +168,7 @@ namespace Grunwald.BooBinding.CodeCompletion
return true; return true;
} }
// Boo can import classes: // Boo can import classes+modules:
foreach (IUsing @using in cu.Usings) {
foreach (string import in @using.Usings) {
IClass c = projectContent.GetClass(import);
if (c != null) {
if (ResolveMember(c.DefaultReturnType, identifier))
return true;
}
}
}
// Boo can import modules:
foreach (object o in resolver.GetImportedNamespaceContents()) { foreach (object o in resolver.GetImportedNamespaceContents()) {
IClass c = o as IClass; IClass c = o as IClass;
if (c != null && IsSameName(identifier, c.Name)) { if (c != null && IsSameName(identifier, c.Name)) {

1
src/AddIns/BackendBindings/Boo/BooBinding/Project/Templates/ConsoleProject.xpt

@ -21,7 +21,6 @@
<Options/> <Options/>
<ProjectItems> <ProjectItems>
<Reference Include="System" />
<Reference Include="System.Data" /> <Reference Include="System.Data" />
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
</ProjectItems> </ProjectItems>

1
src/AddIns/BackendBindings/Boo/BooBinding/Project/Templates/FormsProject.xpt

@ -21,7 +21,6 @@
<Options OutputType = "WinExe" /> <Options OutputType = "WinExe" />
<ProjectItems> <ProjectItems>
<Reference Include="System" />
<Reference Include="System.Data" /> <Reference Include="System.Data" />
<Reference Include="System.Drawing" /> <Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" /> <Reference Include="System.Windows.Forms" />

1
src/AddIns/BackendBindings/Boo/BooBinding/Project/Templates/Library.xpt

@ -21,7 +21,6 @@
<Options OutputType = "Library" /> <Options OutputType = "Library" />
<ProjectItems> <ProjectItems>
<Reference Include="System" />
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
</ProjectItems> </ProjectItems>

18
src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs

@ -996,7 +996,25 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
return; return;
} }
bool importNamespaces = projectContent.Language.ImportNamespaces; bool importNamespaces = projectContent.Language.ImportNamespaces;
bool importClasses = projectContent.Language.CanImportClasses;
foreach (string name in u.Usings) { foreach (string name in u.Usings) {
if (importClasses) {
IClass c = projectContent.GetClass(name, 0);
if (c != null) {
ArrayList members = new ArrayList();
IReturnType t = c.DefaultReturnType;
members.AddRange(t.GetMethods());
members.AddRange(t.GetFields());
members.AddRange(t.GetEvents());
members.AddRange(t.GetProperties());
foreach (IMember m in members) {
if (m.IsStatic && m.IsPublic) {
result.Add(m);
}
}
continue;
}
}
if (importNamespaces) { if (importNamespaces) {
projectContent.AddNamespaceContents(result, name, projectContent.Language, true); projectContent.AddNamespaceContents(result, name, projectContent.Language, true);
} else { } else {

11
src/Main/Base/Project/Src/Services/ParserService/ParseProjectContent.cs

@ -112,9 +112,20 @@ namespace ICSharpCode.Core
} }
} }
int languageDefaultImportCount = -1;
void UpdateDefaultImports(ProjectItem[] items) void UpdateDefaultImports(ProjectItem[] items)
{ {
if (languageDefaultImportCount < 0) {
languageDefaultImportCount = (DefaultImports != null) ? DefaultImports.Usings.Count : 0;
}
if (languageDefaultImportCount == 0) {
DefaultImports = null; DefaultImports = null;
} else {
while (DefaultImports.Usings.Count > languageDefaultImportCount) {
DefaultImports.Usings.RemoveAt(languageDefaultImportCount);
}
}
foreach (ProjectItem item in items) { foreach (ProjectItem item in items) {
if (item.ItemType == ItemType.Import) { if (item.ItemType == ItemType.Import) {
if (DefaultImports == null) { if (DefaultImports == null) {

Loading…
Cancel
Save