Browse Source

Started implementing the EnvDTE code model.

pull/45/merge
Daniel Grunwald 12 years ago
parent
commit
7fa7a51b5a
  1. 140
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeElement.cs
  2. 102
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeElementsList.cs
  3. 95
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeTypeMembers.cs
  4. 92
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeVariable.cs
  5. 65
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/EditPoint.cs
  6. 2
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Project.cs
  7. 2
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectKind.cs
  8. 24
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectType.cs
  9. 90
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/TextPoint.cs
  10. 25
      src/AddIns/Misc/PackageManagement/Project/Src/IDocumentLoader.cs
  11. 67
      src/AddIns/Misc/PackageManagement/Project/Src/IProjectContentExtensions.cs
  12. 6
      src/AddIns/Misc/PackageManagement/Project/Src/VisualStudio/FlavoredProject.cs
  13. 4
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectTests.cs
  14. 10
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ProjectHelper.cs
  15. 14
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableProject.cs
  16. 10
      src/Main/Base/Project/Dom/IEntityModel.cs
  17. 12
      src/Main/Base/Project/Dom/IEventModel.cs
  18. 12
      src/Main/Base/Project/Dom/IFieldModel.cs
  19. 12
      src/Main/Base/Project/Dom/IMethodModel.cs
  20. 12
      src/Main/Base/Project/Dom/IPropertyModel.cs
  21. 4
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  22. 5
      src/Main/SharpDevelop/Dom/MemberModel.cs
  23. 17
      src/Main/SharpDevelop/Dom/TypeDefinitionModel.cs

140
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeElement.cs

@ -1,77 +1,63 @@ @@ -1,77 +1,63 @@
//// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
//// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
//
//using System;
//using ICSharpCode.SharpDevelop.Dom;
//using ICSharpCode.SharpDevelop.Project;
//
//namespace ICSharpCode.PackageManagement.EnvDTE
//{
// public class CodeElement : global::EnvDTE.CodeElementBase, global::EnvDTE.CodeElement
// {
// DTE dte;
//
// public CodeElement()
// {
// }
//
// public CodeElement(IEntity entity)
// {
// this.Entity = entity;
// this.Language = entity.ProjectContent.GetCodeModelLanguage();
// }
//
// protected IEntity Entity { get; private set; }
//
// public virtual string Name {
// get { return GetName(); }
// }
//
// string GetName()
// {
// int index = Entity.FullyQualifiedName.LastIndexOf('.');
// return Entity.FullyQualifiedName.Substring(index + 1);
// }
//
// public virtual string Language { get; protected set; }
//
// // default is vsCMPart.vsCMPartWholeWithAttributes
// public virtual global::EnvDTE.TextPoint GetStartPoint()
// {
// return null;
// }
//
// public virtual global::EnvDTE.TextPoint GetEndPoint()
// {
// return null;
// }
//
// public virtual global::EnvDTE.vsCMInfoLocation InfoLocation { get; protected set; }
//
// public virtual global::EnvDTE.DTE DTE {
// get {
// if (dte == null) {
// dte = new DTE();
// }
// return dte;
// }
// }
//
// protected global::EnvDTE.vsCMAccess GetAccess()
// {
// if (Entity.IsPublic) {
// return global::EnvDTE.vsCMAccess.vsCMAccessPublic;
// }
// return global::EnvDTE.vsCMAccess.vsCMAccessPrivate;
// }
//
// public virtual global::EnvDTE.vsCMElement Kind {
// get { return global::EnvDTE.vsCMElement.vsCMElementOther; }
// }
//
// protected override bool GetIsDerivedFrom(string fullName)
// {
// return false;
// }
// }
//}
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.PackageManagement.EnvDTE
{
public class CodeElement : global::EnvDTE.CodeElementBase, global::EnvDTE.CodeElement
{
DTE dte;
IEntityModel entityModel;
public CodeElement()
{
}
public CodeElement(IEntityModel entityModel)
{
this.entityModel = entityModel;
this.Language = entityModel.ParentProject.GetCodeModelLanguage();
}
public virtual string Name {
get { return entityModel.Name; }
}
public virtual string Language { get; protected set; }
// default is vsCMPart.vsCMPartWholeWithAttributes
public virtual global::EnvDTE.TextPoint GetStartPoint()
{
return null;
}
public virtual global::EnvDTE.TextPoint GetEndPoint()
{
return null;
}
public virtual global::EnvDTE.vsCMInfoLocation InfoLocation { get; protected set; }
public virtual global::EnvDTE.DTE DTE {
get {
if (dte == null) {
dte = new DTE();
}
return dte;
}
}
public virtual global::EnvDTE.vsCMElement Kind {
get { return global::EnvDTE.vsCMElement.vsCMElementOther; }
}
protected override bool GetIsDerivedFrom(string fullName)
{
return false;
}
}
}

102
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeElementsList.cs

@ -1,51 +1,51 @@ @@ -1,51 +1,51 @@
//// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
//// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
//
//using System;
//using System.Collections;
//using System.Collections.Generic;
//using System.Linq;
//
//namespace ICSharpCode.PackageManagement.EnvDTE
//{
// public class CodeElementsList : MarshalByRefObject, global::EnvDTE.CodeElements
// {
// List<CodeElement> elements = new List<CodeElement>();
//
// public CodeElementsList()
// {
// }
//
// protected virtual void AddCodeElement(CodeElement element)
// {
// elements.Add(element);
// }
//
// public int Count {
// get { return elements.Count; }
// }
//
// public IEnumerator GetEnumerator()
// {
// return elements.GetEnumerator();
// }
//
// public global::EnvDTE.CodeElement Item(object index)
// {
// if (index is int) {
// return Item((int)index);
// }
// return Item((string)index);
// }
//
// global::EnvDTE.CodeElement Item(int index)
// {
// return elements[index - 1];
// }
//
// global::EnvDTE.CodeElement Item(string name)
// {
// return elements.Single(item => item.Name == name);
// }
// }
//}
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
namespace ICSharpCode.PackageManagement.EnvDTE
{
public class CodeElementsList : MarshalByRefObject, global::EnvDTE.CodeElements
{
List<CodeElement> elements = new List<CodeElement>();
public CodeElementsList()
{
}
protected virtual void AddCodeElement(CodeElement element)
{
elements.Add(element);
}
public int Count {
get { return elements.Count; }
}
public IEnumerator GetEnumerator()
{
return elements.GetEnumerator();
}
public global::EnvDTE.CodeElement Item(object index)
{
if (index is int) {
return Item((int)index);
}
return Item((string)index);
}
global::EnvDTE.CodeElement Item(int index)
{
return elements[index - 1];
}
global::EnvDTE.CodeElement Item(string name)
{
return elements.Single(item => item.Name == name);
}
}
}

95
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeTypeMembers.cs

@ -1,49 +1,46 @@ @@ -1,49 +1,46 @@
//// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
//// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
//
//using System;
//using ICSharpCode.SharpDevelop.Dom;
//
//namespace ICSharpCode.PackageManagement.EnvDTE
//{
// public class CodeTypeMembers : CodeElementsList
// {
// IProjectContent projectContent;
// IClass c;
//
// public CodeTypeMembers(IProjectContent projectContent, IClass c)
// {
// this.projectContent = projectContent;
// this.c = c;
// AddMembers();
// }
//
// void AddMembers()
// {
// foreach (IProperty property in c.Properties) {
// AddProperty(property);
// }
// foreach (IField field in c.Fields) {
// AddField(field);
// }
// foreach (IMethod method in c.Methods) {
// AddMethod(method);
// }
// }
//
// void AddMethod(IMethod method)
// {
// AddCodeElement(new CodeFunction2(method));
// }
//
// void AddField(IField field)
// {
// AddCodeElement(new CodeVariable(field));
// }
//
// void AddProperty(IProperty property)
// {
// AddCodeElement(new CodeProperty2(property));
// }
// }
//}
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop.Dom;
namespace ICSharpCode.PackageManagement.EnvDTE
{
public class CodeTypeMembers : CodeElementsList
{
public CodeTypeMembers(IModelCollection<IMemberModel> members)
{
foreach (var m in members) {
var e = CreateMember(m);
if (e != null)
base.AddCodeElement(e);
}
// TODO track collection changes
//members.CollectionChanged += members_CollectionChanged;
}
CodeElement CreateMember(IMemberModel m)
{
switch (m.SymbolKind) {
case SymbolKind.Field:
// return new CodeVariable(m);
throw new NotImplementedException();
case SymbolKind.Property:
case SymbolKind.Indexer:
// return new CodeProperty2(m);
throw new NotImplementedException();
case SymbolKind.Event:
return null; // events are not supported in EnvDTE?
case SymbolKind.Method:
case SymbolKind.Operator:
case SymbolKind.Constructor:
case SymbolKind.Destructor:
// return new CodeFunction2(m);
throw new NotImplementedException();
default:
throw new NotSupportedException("Invalid value for SymbolKind");
}
}
}
}

92
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeVariable.cs

@ -1,49 +1,43 @@ @@ -1,49 +1,43 @@
//// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
//// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
//
//using System;
//using ICSharpCode.SharpDevelop.Dom;
//
//namespace ICSharpCode.PackageManagement.EnvDTE
//{
// public class CodeVariable : CodeElement, global::EnvDTE.CodeVariable
// {
// IField field;
// IDocumentLoader documentLoader;
//
// public CodeVariable()
// {
// }
//
// public CodeVariable(IField field)
// : this(field, new DocumentLoader())
// {
// }
//
// public CodeVariable(IField field, IDocumentLoader documentLoader)
// : base(field)
// {
// this.field = field;
// this.documentLoader = documentLoader;
// }
//
// public override global::EnvDTE.vsCMElement Kind {
// get { return global::EnvDTE.vsCMElement.vsCMElementVariable; }
// }
//
// public global::EnvDTE.vsCMAccess Access {
// get { return GetAccess(); }
// set { }
// }
//
// public override global::EnvDTE.TextPoint GetStartPoint()
// {
// return new TextPoint(field.GetStartPosition(), documentLoader);
// }
//
// public override global::EnvDTE.TextPoint GetEndPoint()
// {
// return new TextPoint(field.GetEndPosition(), documentLoader);
// }
// }
//}
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.SharpDevelop.Dom;
namespace ICSharpCode.PackageManagement.EnvDTE
{
public class CodeVariable : CodeElement, global::EnvDTE.CodeVariable
{
readonly IFieldModel field;
readonly IDocumentLoader documentLoader;
public CodeVariable()
{
}
public CodeVariable(IFieldModel field, IDocumentLoader documentLoader)
{
this.field = field;
this.documentLoader = documentLoader;
}
public override global::EnvDTE.vsCMElement Kind {
get { return global::EnvDTE.vsCMElement.vsCMElementVariable; }
}
public global::EnvDTE.vsCMAccess Access {
get { return field.Accessibility.ToAccess(); }
set { field.Accessibility = value.ToAccessibility(); }
}
public override global::EnvDTE.TextPoint GetStartPoint()
{
return TextPoint.CreateStartPoint(field.Region, documentLoader);
}
public override global::EnvDTE.TextPoint GetEndPoint()
{
return TextPoint.CreateEndPoint(field.Region, documentLoader);
}
}
}

65
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/EditPoint.cs

@ -1,36 +1,37 @@ @@ -1,36 +1,37 @@
//// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
//// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
//
//using System;
//using ICSharpCode.SharpDevelop.Dom;
//using ICSharpCode.SharpDevelop.Dom.Refactoring;
//
//namespace ICSharpCode.PackageManagement.EnvDTE
//{
// public class EditPoint : TextPoint, global::EnvDTE.EditPoint
// {
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.NRefactory;
using ICSharpCode.SharpDevelop.Dom;
namespace ICSharpCode.PackageManagement.EnvDTE
{
public class EditPoint : TextPoint, global::EnvDTE.EditPoint
{
// IRefactoringDocument document;
// IRefactoringDocumentView documentView;
//
// internal EditPoint(FilePosition filePosition, IDocumentLoader documentLoader)
// : base(filePosition, documentLoader)
// {
// }
//
// public void ReplaceText(object pointOrCount, string text, int flags)
// {
// ReplaceText((TextPoint)pointOrCount, text, (global::EnvDTE.vsEPReplaceTextOptions)flags);
// }
//
// void ReplaceText(TextPoint endPoint, string text, global::EnvDTE.vsEPReplaceTextOptions textFormatOptions)
// {
internal EditPoint(string fileName, TextLocation location, IDocumentLoader documentLoader)
: base(fileName, location, documentLoader)
{
}
public void ReplaceText(object pointOrCount, string text, int flags)
{
ReplaceText((TextPoint)pointOrCount, text, (global::EnvDTE.vsEPReplaceTextOptions)flags);
}
void ReplaceText(TextPoint endPoint, string text, global::EnvDTE.vsEPReplaceTextOptions textFormatOptions)
{
throw new NotImplementedException();
// OpenDocument();
// int offset = GetStartOffset();
// int endOffset = GetEndOffset(endPoint);
// document.Replace(offset, endOffset - offset, text);
// IndentReplacedText(text);
// }
//
}
// void OpenDocument()
// {
// documentView = DocumentLoader.LoadRefactoringDocumentView(FilePosition.FileName);
@ -64,9 +65,9 @@ @@ -64,9 +65,9 @@
// return text.Split('\n').Length;
// }
//
// public void Insert(string text)
// {
// throw new NotImplementedException();
// }
// }
//}
public void Insert(string text)
{
throw new NotImplementedException();
}
}
}

2
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Project.cs

@ -99,7 +99,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -99,7 +99,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
string GetProjectType()
{
return new ProjectType(this).Type;
return ProjectType.GetProjectType(MSBuildProject);
}
public virtual string Kind {

2
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectKind.cs

@ -15,7 +15,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -15,7 +15,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
string GetProjectKind(Project project)
{
string type = new ProjectType(project).Type;
string type = ProjectType.GetProjectType(project);
if (type == ProjectType.CSharp) {
return SD.ProjectTypeGuids.CSharp.ToString();
} else if (type == ProjectType.VBNet.ToString()) {

24
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectType.cs

@ -6,32 +6,22 @@ using ICSharpCode.SharpDevelop.Project; @@ -6,32 +6,22 @@ using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.PackageManagement.EnvDTE
{
public class ProjectType
public static class ProjectType
{
public static readonly string VBNet = "VB.NET";
public static readonly string CSharp = "C#";
public ProjectType(Project project)
public static string GetProjectType(Project project)
{
this.Type = GetProjectType(project);
return GetProjectType(project.MSBuildProject);
}
public ProjectType(MSBuildBasedProject project)
: this(new Project(project))
public static string GetProjectType(IProject project)
{
}
string GetProjectType(Project project)
{
string extension = project.GetLowercaseFileExtension();
if (extension == ".csproj") {
return CSharp;
} else if (extension == ".vbproj") {
if (project.Language == "VB")
return VBNet;
}
return String.Empty;
else
return project.Language;
}
public string Type { get; private set; }
}
}

90
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/TextPoint.cs

@ -1,43 +1,47 @@ @@ -1,43 +1,47 @@
//// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
//// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
//
//using System;
//using ICSharpCode.SharpDevelop.Dom;
//
//namespace ICSharpCode.PackageManagement.EnvDTE
//{
// public class TextPoint : MarshalByRefObject, global::EnvDTE.TextPoint
// {
// internal TextPoint(FilePosition filePosition, IDocumentLoader documentLoader)
// {
// this.FilePosition = filePosition;
// this.DocumentLoader = documentLoader;
// }
//
// protected IDocumentLoader DocumentLoader { get; private set; }
// protected FilePosition FilePosition { get; private set; }
//
// public int LineCharOffset {
// get { return FilePosition.Column; }
// }
//
// public int Line {
// get { return FilePosition.Line; }
// }
//
// public global::EnvDTE.EditPoint CreateEditPoint()
// {
// return new EditPoint(FilePosition, DocumentLoader);
// }
//
// internal static TextPoint CreateStartPoint(FilePosition position, IDocumentLoader documentLoader)
// {
// return new TextPoint(position, documentLoader);
// }
//
// internal static TextPoint CreateEndPoint(FilePosition position, IDocumentLoader documentLoader)
// {
// return new TextPoint(position, documentLoader);
// }
// }
//}
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop.Dom;
namespace ICSharpCode.PackageManagement.EnvDTE
{
public class TextPoint : MarshalByRefObject, global::EnvDTE.TextPoint
{
protected readonly string fileName;
protected readonly TextLocation location;
protected readonly IDocumentLoader documentLoader;
internal TextPoint(string fileName, TextLocation location, IDocumentLoader documentLoader)
{
this.fileName = fileName;
this.location = location;
this.documentLoader = documentLoader;
}
public int LineCharOffset {
get { return location.Column; }
}
public int Line {
get { return location.Line; }
}
public global::EnvDTE.EditPoint CreateEditPoint()
{
return new EditPoint(fileName, location, documentLoader);
}
internal static TextPoint CreateStartPoint(DomRegion region, IDocumentLoader documentLoader)
{
return new TextPoint(region.FileName, region.Begin, documentLoader);
}
internal static TextPoint CreateEndPoint(DomRegion region, IDocumentLoader documentLoader)
{
return new TextPoint(region.FileName, region.End, documentLoader);
}
}
}

25
src/AddIns/Misc/PackageManagement/Project/Src/IDocumentLoader.cs

@ -1,15 +1,14 @@ @@ -1,15 +1,14 @@
//// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
//// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
//
//using System;
//using ICSharpCode.SharpDevelop.Dom.Refactoring;
//using ICSharpCode.SharpDevelop.Editor;
//
//namespace ICSharpCode.PackageManagement
//{
// public interface IDocumentLoader
// {
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.SharpDevelop.Editor;
namespace ICSharpCode.PackageManagement
{
public interface IDocumentLoader
{
// IRefactoringDocument LoadRefactoringDocument(string fileName);
// IRefactoringDocumentView LoadRefactoringDocumentView(string fileName);
// }
//}
}
}

67
src/AddIns/Misc/PackageManagement/Project/Src/IProjectContentExtensions.cs

@ -1,24 +1,43 @@ @@ -1,24 +1,43 @@
//// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
//// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
//
//using System;
//using ICSharpCode.PackageManagement.EnvDTE;
//using ICSharpCode.SharpDevelop.Dom;
//using ICSharpCode.SharpDevelop.Project;
//
//namespace ICSharpCode.PackageManagement
//{
// public static class IProjectContentExtensions
// {
// public static string GetCodeModelLanguage(this IProjectContent projectContent)
// {
// if (projectContent.Project != null) {
// var projectType = new ProjectType(projectContent.Project as MSBuildBasedProject);
// if (projectType.Type == ProjectType.VBNet) {
// return global::EnvDTE.CodeModelLanguageConstants.vsCMLanguageVB;
// }
// }
// return global::EnvDTE.CodeModelLanguageConstants.vsCMLanguageCSharp;
// }
// }
//}
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.PackageManagement.EnvDTE;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.PackageManagement
{
public static class NRefactoryExtensionsForEnvDTE
{
public static string GetCodeModelLanguage(this IProject project)
{
if (project != null && project.Language == "VB") {
return global::EnvDTE.CodeModelLanguageConstants.vsCMLanguageVB;
}
return global::EnvDTE.CodeModelLanguageConstants.vsCMLanguageCSharp;
}
public static global::EnvDTE.vsCMAccess ToAccess(this Accessibility accessiblity)
{
if (accessiblity == Accessibility.Public)
return global::EnvDTE.vsCMAccess.vsCMAccessPublic;
else
return global::EnvDTE.vsCMAccess.vsCMAccessPrivate;
}
public static Accessibility ToAccessibility(this global::EnvDTE.vsCMAccess access)
{
switch (access) {
case global::EnvDTE.vsCMAccess.vsCMAccessPublic:
return Accessibility.Public;
case global::EnvDTE.vsCMAccess.vsCMAccessPrivate:
return Accessibility.Private;
default:
throw new Exception("Invalid value for vsCMAccess");
}
}
}
}

6
src/AddIns/Misc/PackageManagement/Project/Src/VisualStudio/FlavoredProject.cs

@ -33,10 +33,10 @@ namespace Microsoft.VisualStudio.Shell.Flavor @@ -33,10 +33,10 @@ namespace Microsoft.VisualStudio.Shell.Flavor
string GetProjectTypeGuidsBasedOnProjectFileExtension()
{
var projectType = new ProjectType(project);
if (projectType.Type == ProjectType.CSharp) {
var projectType = ProjectType.GetProjectType(project);
if (projectType == ProjectType.CSharp) {
return ProjectTypeGuids.CSharp.ToString();
} else if (projectType.Type == ProjectType.VBNet) {
} else if (projectType == ProjectType.VBNet) {
return ProjectTypeGuids.VBNet.ToString();
}
return String.Empty;

4
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectTests.cs

@ -22,7 +22,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -22,7 +22,7 @@ namespace PackageManagement.Tests.EnvDTE
IPackageManagementProjectService fakeProjectService;
IPackageManagementFileService fakeFileService;
void CreateProject(string fileName = @"d:\projects\MyProject\MyProject.csproj")
void CreateProject(string fileName = @"d:\projects\MyProject\MyProject.csproj", string language = "C#")
{
msbuildProject = ProjectHelper.CreateTestProject();
msbuildProject.FileName = new FileName(fileName);
@ -86,7 +86,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -86,7 +86,7 @@ namespace PackageManagement.Tests.EnvDTE
[Test]
public void Type_ProjectIsCSharpProject_ReturnsCSharp()
{
CreateProject(@"c:\projects\myproject\test.csproj");
CreateProject(@"c:\projects\myproject\test.csproj", "C#");
string projectType = project.Type;

10
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ProjectHelper.cs

@ -102,15 +102,7 @@ namespace PackageManagement.Tests.Helpers @@ -102,15 +102,7 @@ namespace PackageManagement.Tests.Helpers
public static FileProjectItem GetFile(MSBuildBasedProject project, string fileName)
{
foreach (ProjectItem projectItem in project.Items) {
FileProjectItem fileItem = projectItem as FileProjectItem;
if (fileItem != null) {
if (fileItem.FileName == fileName) {
return fileItem;
}
}
}
return null;
return project.FindFile(FileName.Create(fileName));
}
public static FileProjectItem GetFileFromInclude(TestableProject project, string include)

14
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableProject.cs

@ -28,6 +28,20 @@ namespace PackageManagement.Tests.Helpers @@ -28,6 +28,20 @@ namespace PackageManagement.Tests.Helpers
{
}
public override string Language {
get {
// HACK: unit tests only provide the file extension, but we now need the language
switch (this.FileName.GetExtension().ToLowerInvariant()) {
case ".csproj":
return "C#";
case ".vbproj":
return "VB";
default:
return string.Empty;
}
}
}
public override bool IsStartable {
get { return isStartable; }
}

10
src/Main/Base/Project/Dom/IEntityModel.cs

@ -19,6 +19,16 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -19,6 +19,16 @@ namespace ICSharpCode.SharpDevelop.Dom
/// </summary>
string Name { get; }
/// <summary>
/// Gets the symbol kind of the entity.
/// </summary>
SymbolKind SymbolKind { get; }
/// <summary>
/// Gets/sets the accessibility of the entity.
/// </summary>
Accessibility Accessibility { get; set; }
/// <summary>
/// Gets the parent project that contains this entity.
/// May return null if the entity is not part of a project.

12
src/Main/Base/Project/Dom/IEventModel.cs

@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
namespace ICSharpCode.SharpDevelop.Dom
{
public interface IEventModel : IMemberModel
{
}
}

12
src/Main/Base/Project/Dom/IFieldModel.cs

@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
namespace ICSharpCode.SharpDevelop.Dom
{
public interface IFieldModel : IMemberModel
{
}
}

12
src/Main/Base/Project/Dom/IMethodModel.cs

@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
namespace ICSharpCode.SharpDevelop.Dom
{
public interface IMethodModel : IMemberModel
{
}
}

12
src/Main/Base/Project/Dom/IPropertyModel.cs

@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
namespace ICSharpCode.SharpDevelop.Dom
{
public interface IPropertyModel : IMemberModel
{
}
}

4
src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj

@ -85,8 +85,12 @@ @@ -85,8 +85,12 @@
<Compile Include="Designer\IDesignerTypeResolutionService.cs" />
<Compile Include="Designer\TypeResolutionService.cs" />
<Compile Include="Dom\IEntityModelContext.cs" />
<Compile Include="Dom\IEventModel.cs" />
<Compile Include="Dom\IFieldModel.cs" />
<Compile Include="Dom\IMemberModel.cs" />
<Compile Include="Dom\IMethodModel.cs" />
<Compile Include="Dom\IModelFactory.cs" />
<Compile Include="Dom\IPropertyModel.cs" />
<Compile Include="Dom\ITypeDefinitionModel.cs" />
<Compile Include="Dom\ITypeDefinitionModelCollection.cs" />
<Compile Include="Dom\IEntityModel.cs" />

5
src/Main/SharpDevelop/Dom/MemberModel.cs

@ -58,6 +58,11 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -58,6 +58,11 @@ namespace ICSharpCode.SharpDevelop.Dom
get { return member.SymbolKind; }
}
public Accessibility Accessibility {
get { return member.Accessibility; }
set { throw new NotImplementedException(); }
}
public DomRegion Region {
get { return member.Region; }
}

17
src/Main/SharpDevelop/Dom/TypeDefinitionModel.cs

@ -42,6 +42,23 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -42,6 +42,23 @@ namespace ICSharpCode.SharpDevelop.Dom
get { return context.Project; }
}
public SymbolKind SymbolKind {
get { return SymbolKind.TypeDefinition; }
}
public Accessibility Accessibility {
get {
var td = Resolve();
if (td != null)
return td.Accessibility;
else
return Accessibility.None;
}
set {
throw new NotImplementedException();
}
}
public FullTypeName FullTypeName {
get { return fullTypeName; }
}

Loading…
Cancel
Save