Browse Source

Implement EnvDTE.CodeModel.Language

Used by EntityFramework to determine which migration config template to use.
pull/28/head
Matt Ward 13 years ago
parent
commit
08b85bb7ec
  1. 2
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  2. 13
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeElement.cs
  3. 2
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeModel.cs
  4. 13
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeModelLanguageConstants.cs
  5. 2
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeNamespace.cs
  6. 24
      src/AddIns/Misc/PackageManagement/Project/Src/IProjectContentExtensions.cs
  7. 1
      src/AddIns/Misc/PackageManagement/SharpDevelop.EnvDTE/SharpDevelop.EnvDTE.vbproj
  8. 9
      src/AddIns/Misc/PackageManagement/SharpDevelop.EnvDTE/Src/CodeLanguageModelConstants.vb
  9. 4
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeClass2Tests.cs
  10. 65
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeModelTests.cs
  11. 4
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeNamespaceTests.cs

2
src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj

@ -102,7 +102,6 @@ @@ -102,7 +102,6 @@
<Compile Include="Src\EnvDTE\CodeParameter2.cs" />
<Compile Include="Src\EnvDTE\CodeParameters.cs" />
<Compile Include="Src\EnvDTE\CodeModel.cs" />
<Compile Include="Src\EnvDTE\CodeModelLanguageConstants.cs" />
<Compile Include="Src\EnvDTE\CodeNamespace.cs" />
<Compile Include="Src\EnvDTE\CodeParameter.cs" />
<Compile Include="Src\EnvDTE\CodeProperty.cs" />
@ -148,6 +147,7 @@ @@ -148,6 +147,7 @@
<Compile Include="Src\EnvDTE\Window.cs" />
<Compile Include="Src\IClassKindUpdater.cs" />
<Compile Include="Src\IDocumentNamespaceCreator.cs" />
<Compile Include="Src\IProjectContentExtensions.cs" />
<Compile Include="Src\IVirtualMethodUpdater.cs" />
<Compile Include="Src\IProjectBrowserUpdater.cs" />
<Compile Include="Src\IRefactoringDocumentView.cs" />

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

@ -18,18 +18,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -18,18 +18,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
public CodeElement(IEntity entity)
{
this.Entity = entity;
this.Language = GetLanguage(entity.ProjectContent);
}
protected string GetLanguage(IProjectContent projectContent)
{
if (projectContent.Project != null) {
var projectType = new ProjectType(projectContent.Project as MSBuildBasedProject);
if (projectType.Type == ProjectType.VBNet) {
return CodeModelLanguageConstants.vsCMLanguageVB;
}
}
return CodeModelLanguageConstants.vsCMLanguageCSharp;
this.Language = entity.ProjectContent.GetCodeModelLanguage();
}
protected IEntity Entity { get; private set; }

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

@ -43,7 +43,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -43,7 +43,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
}
public string Language {
get { throw new NotImplementedException(); }
get { return projectContent.GetCodeModelLanguage(); }
}
}
}

13
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeModelLanguageConstants.cs

@ -1,13 +0,0 @@ @@ -1,13 +0,0 @@
// 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.PackageManagement.EnvDTE
{
public abstract class CodeModelLanguageConstants
{
public const string vsCMLanguageCSharp = "{B5E9BD34-6D3E-4B5D-925E-8A43B79820B4}";
public const string vsCMLanguageVB = "{B5E9BD33-6D3E-4B5D-925E-8A43B79820B4}";
}
}

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

@ -21,7 +21,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -21,7 +21,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
this.projectContent = projectContent;
this.namespaceName = namespaceName;
this.InfoLocation = global::EnvDTE.vsCMInfoLocation.vsCMInfoLocationExternal;
this.Language = GetLanguage(projectContent);
this.Language = projectContent.GetCodeModelLanguage();
}
public override global::EnvDTE.vsCMElement Kind {

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

@ -0,0 +1,24 @@ @@ -0,0 +1,24 @@
// 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;
}
}
}

1
src/AddIns/Misc/PackageManagement/SharpDevelop.EnvDTE/SharpDevelop.EnvDTE.vbproj

@ -65,6 +65,7 @@ @@ -65,6 +65,7 @@
<Compile Include="Src\CodeFunction2.vb" />
<Compile Include="Src\CodeImport.vb" />
<Compile Include="Src\CodeInterface.vb" />
<Compile Include="Src\CodeLanguageModelConstants.vb" />
<Compile Include="Src\CodeModel.vb" />
<Compile Include="Src\CodeModelLanguageConstants.vb" />
<Compile Include="Src\CodeNamespace.vb" />

9
src/AddIns/Misc/PackageManagement/SharpDevelop.EnvDTE/Src/CodeLanguageModelConstants.vb

@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
' 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)
Namespace EnvDTE
Public MustInherit Class CodeLanguageModelConstants
Public Const vsCMLanguageCSharp As String = "{B5E9BD34-6D3E-4B5D-925E-8A43B79820B4}"
Public Const vsCMLanguageVB As String = "B5E9BD33-6D3E-4B5D-925E-8A43B79820B4}"
End Class
End Namespace

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

@ -117,7 +117,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -117,7 +117,7 @@ namespace PackageManagement.Tests.EnvDTE
string language = codeClass.Language;
Assert.AreEqual(CodeModelLanguageConstants.vsCMLanguageCSharp, language);
Assert.AreEqual(global::EnvDTE.CodeModelLanguageConstants.vsCMLanguageCSharp, language);
}
[Test]
@ -129,7 +129,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -129,7 +129,7 @@ namespace PackageManagement.Tests.EnvDTE
string language = codeClass.Language;
Assert.AreEqual(CodeModelLanguageConstants.vsCMLanguageVB, language);
Assert.AreEqual(global::EnvDTE.CodeModelLanguageConstants.vsCMLanguageVB, language);
}
[Test]

65
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeModelTests.cs

@ -21,10 +21,39 @@ namespace PackageManagement.Tests.EnvDTE @@ -21,10 +21,39 @@ namespace PackageManagement.Tests.EnvDTE
void CreateCodeModel()
{
helper = new ProjectContentHelper();
CreateProjectContentHelper();
CreateProjectForProjectContent();
CreateCodeModel(helper.ProjectContent);
}
void CreateProjectForProjectContent()
{
msbuildProject = ProjectHelper.CreateTestProject();
helper.SetProjectForProjectContent(msbuildProject);
codeModel = new CodeModel(helper.ProjectContent);
}
void CreateProjectContentHelper()
{
helper = new ProjectContentHelper();
}
void CreateCodeModel(IProjectContent projectContent)
{
codeModel = new CodeModel(projectContent);
}
void CreateCodeModelWithCSharpProject()
{
CreateProjectContentHelper();
helper.ProjectContentIsForCSharpProject();
CreateCodeModel(helper.ProjectContent);
}
void CreateCodeModelWithVisualBasicProject()
{
CreateProjectContentHelper();
helper.ProjectContentIsForVisualBasicProject();
CreateCodeModel(helper.ProjectContent);
}
void AddClassToProjectContent(string className)
@ -52,6 +81,16 @@ namespace PackageManagement.Tests.EnvDTE @@ -52,6 +81,16 @@ namespace PackageManagement.Tests.EnvDTE
helper.AddInterfaceToDifferentProjectContent(interfaceName);
}
void ProjectIsCSharpProject()
{
helper.ProjectContentIsForCSharpProject();
}
void ProjectIsVisualBasicProject()
{
helper.ProjectContentIsForVisualBasicProject();
}
[Test]
public void CodeTypeFromFullName_NoSuchTypeInProject_ReturnsNull()
{
@ -184,7 +223,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -184,7 +223,7 @@ namespace PackageManagement.Tests.EnvDTE
Assert.AreEqual(global::EnvDTE.vsCMInfoLocation.vsCMInfoLocationProject, codeClass.InfoLocation);
}
[Test]
public void CodeTypeFromFullName_ClassExistsInDifferentProject_InfoLocationIsExternal()
{
@ -217,5 +256,25 @@ namespace PackageManagement.Tests.EnvDTE @@ -217,5 +256,25 @@ namespace PackageManagement.Tests.EnvDTE
Assert.AreEqual(global::EnvDTE.vsCMInfoLocation.vsCMInfoLocationExternal, codeInterface.InfoLocation);
}
[Test]
public void Language_CSharpProject_ReturnsCSharpProjectGuid()
{
CreateCodeModelWithCSharpProject();
string language = codeModel.Language;
Assert.AreEqual(global::EnvDTE.CodeModelLanguageConstants.vsCMLanguageCSharp, language);
}
[Test]
public void Language_VisualBasicProject_ReturnsVisualBasicProjectGuid()
{
CreateCodeModelWithVisualBasicProject();
string language = codeModel.Language;
Assert.AreEqual(global::EnvDTE.CodeModelLanguageConstants.vsCMLanguageVB, language);
}
}
}

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

@ -135,7 +135,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -135,7 +135,7 @@ namespace PackageManagement.Tests.EnvDTE
string language = codeNamespace.Language;
Assert.AreEqual(CodeModelLanguageConstants.vsCMLanguageCSharp, language);
Assert.AreEqual(global::EnvDTE.CodeModelLanguageConstants.vsCMLanguageCSharp, language);
}
[Test]
@ -147,7 +147,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -147,7 +147,7 @@ namespace PackageManagement.Tests.EnvDTE
string language = codeNamespace.Language;
Assert.AreEqual(CodeModelLanguageConstants.vsCMLanguageVB, language);
Assert.AreEqual(global::EnvDTE.CodeModelLanguageConstants.vsCMLanguageVB, language);
}
[Test]

Loading…
Cancel
Save