Browse Source

Compiling for the compact framework now references the Compact mscorlib version (previously it was possible to reference non-existing methods and cause a MissingMethodException at runtime).

CecilReader now reads attributes for class members.
BooProject now references Boo.Lang.Useful so that code-completion can find it.
Fixed UnknownScriptTag in HTML-Mode.xshd.
Fixed possible deadlock in SearchClassReturnType.cs

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.1@2384 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 19 years ago
parent
commit
33ea15dfff
  1. 12
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooProject.cs
  2. 73
      src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.CSharp.targets
  3. 20
      src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.VisualBasic.targets
  4. 2
      src/Libraries/ICSharpCode.TextEditor/Project/Resources/HTML-Mode.xshd
  5. 4
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CecilReader.cs
  6. 14
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/SearchClassReturnType.cs

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

@ -83,19 +83,19 @@ namespace Grunwald.BooBinding @@ -83,19 +83,19 @@ namespace Grunwald.BooBinding
protected override ParseProjectContent CreateProjectContent()
{
ParseProjectContent pc = base.CreateProjectContent();
ReferenceProjectItem systemItem = new ReferenceProjectItem(this, "System");
pc.AddReferencedContent(ParserService.GetProjectContentForReference(systemItem));
ReferenceProjectItem booLangItem = new ReferenceProjectItem(this, typeof(Boo.Lang.Builtins).Assembly.Location);
pc.AddReferencedContent(ParserService.GetProjectContentForReference(booLangItem));
if (BooCompilerPC == null) {
ReferenceProjectItem booCompilerItem = new ReferenceProjectItem(this, typeof(Boo.Lang.Compiler.AbstractAstAttribute).Assembly.Location);
BooCompilerPC = ParserService.GetProjectContentForReference(booCompilerItem);
}
if (BooUsefulPC == null) {
ReferenceProjectItem booUsefulItem = new ReferenceProjectItem(this, typeof(Boo.Lang.Useful.Attributes.SingletonAttribute).Assembly.Location);
BooUsefulPC = ParserService.GetProjectContentForReference(booUsefulItem);
BooUsefulPC = ParserService.GetRegistryForReference(booUsefulItem).GetProjectContentForReference("Boo.Lang.Useful", booUsefulItem.Include);
}
ParseProjectContent pc = base.CreateProjectContent();
ReferenceProjectItem systemItem = new ReferenceProjectItem(this, "System");
pc.AddReferencedContent(ParserService.GetProjectContentForReference(systemItem));
ReferenceProjectItem booLangItem = new ReferenceProjectItem(this, typeof(Boo.Lang.Builtins).Assembly.Location);
pc.AddReferencedContent(ParserService.GetProjectContentForReference(booLangItem));
pc.DefaultImports = new DefaultUsing(pc);
pc.DefaultImports.Usings.Add("Boo.Lang");
pc.DefaultImports.Usings.Add("Boo.Lang.Builtins");

73
src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.CSharp.targets

@ -7,46 +7,50 @@ @@ -7,46 +7,50 @@
to work around a problem in Microsoft's C# targets
-->
<SharpDevelopTargetFrameworkVersion>$(TargetFrameworkVersion)</SharpDevelopTargetFrameworkVersion>
<SharpDevelopTargetFrameworkClass>unknown</SharpDevelopTargetFrameworkClass>
</PropertyGroup>
<PropertyGroup Condition=" '$(TargetFrameworkVersion)' == 'v1.0' ">
<CscToolPath>$(SystemRoot)\Microsoft.NET\Framework\v1.0.3705</CscToolPath>
<SharpDevelopUse1xCompiler>true</SharpDevelopUse1xCompiler>
<SharpDevelopUseMicrosoftFramework>true</SharpDevelopUseMicrosoftFramework>
</PropertyGroup>
<PropertyGroup Condition=" '$(TargetFrameworkVersion)' == 'v1.1' ">
<CscToolPath>$(SystemRoot)\Microsoft.NET\Framework\v1.1.4322</CscToolPath>
<SharpDevelopUse1xCompiler>true</SharpDevelopUse1xCompiler>
<SharpDevelopUseMicrosoftFramework>true</SharpDevelopUseMicrosoftFramework>
<!-- Work around MsBuild problem: Microsoft.CSharp.targets adds NoWarn entries that -->
<!-- don't exist in v1.1 when version is set to anything else than v1.0 -->
<PropertyGroup Condition=" ('$(SharpDevelopTargetFrameworkVersion)' == 'v1.0') or ($(SharpDevelopTargetFrameworkVersion) == 'v1.1') ">
<TargetFrameworkVersion>v1.0</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(SharpDevelopUse1xCompiler)' == 'true' ">
<!-- TargetFrameworkVersion must be v1.0 both for .NET 1.0 and .NET 1.1 - otherwise Microsoft.CSharp.targets adds invalid NoWarn entries -->
<CscToolPath Condition="'$(SharpDevelopTargetFrameworkVersion)' == 'v1.0'">$(SystemRoot)\Microsoft.NET\Framework\v1.0.3705</CscToolPath>
<CscToolPath Condition="'$(SharpDevelopTargetFrameworkVersion)' == 'v1.1'">$(SystemRoot)\Microsoft.NET\Framework\v1.1.4322</CscToolPath>
<UseHostCompilerIfAvailable>false</UseHostCompilerIfAvailable>
<ErrorReport/>
<PlatformTarget/>
<SharpDevelopTargetFrameworkClass>v1</SharpDevelopTargetFrameworkClass>
</PropertyGroup>
<PropertyGroup Condition=" '$(TargetFrameworkVersion)' == 'v2.0' ">
<SharpDevelopUseMicrosoftFramework>true</SharpDevelopUseMicrosoftFramework>
<PropertyGroup Condition=" ('$(SharpDevelopTargetFrameworkVersion)' == 'v2.0' or '$(SharpDevelopTargetFrameworkVersion)' == '') ">
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
<SharpDevelopTargetFrameworkClass>v2</SharpDevelopTargetFrameworkClass>
</PropertyGroup>
<PropertyGroup Condition=" '$(TargetFrameworkVersion)' == 'CF 1.0' ">
<PropertyGroup Condition=" '$(SharpDevelopTargetFrameworkVersion)' == 'CF 1.0' ">
<TargetFrameworkVersion>v1.0</TargetFrameworkVersion>
<SharpDevelopUseCompactFramework>true</SharpDevelopUseCompactFramework>
<SharpDevelopTargetFrameworkClass>CF</SharpDevelopTargetFrameworkClass>
</PropertyGroup>
<PropertyGroup Condition=" '$(TargetFrameworkVersion)' == 'CF 2.0' ">
<PropertyGroup Condition=" '$(SharpDevelopTargetFrameworkVersion)' == 'CF 2.0' ">
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
<SharpDevelopUseCompactFramework>true</SharpDevelopUseCompactFramework>
<SharpDevelopTargetFrameworkClass>CF</SharpDevelopTargetFrameworkClass>
</PropertyGroup>
<PropertyGroup Condition=" ('$(SharpDevelopTargetFrameworkVersion)' == 'Mono v1.1') or ('$(SharpDevelopTargetFrameworkVersion)' == 'Mono v2.0') ">
<SharpDevelopTargetFrameworkClass>Mono</SharpDevelopTargetFrameworkClass>
</PropertyGroup>
<Target Name="Build" Condition="'$(SharpDevelopTargetFrameworkClass)' == 'unknown'">
<Error Text="Unknown target framework version '$(SharpDevelopTargetFrameworkVersion)'."/>
</Target>
<!-- Use Microsoft's C# standard targets -->
<Import Condition=" '$(SharpDevelopUseMicrosoftFramework)' == 'true' " Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Condition=" ('$(SharpDevelopTargetFrameworkClass)' == 'v1') or ('$(SharpDevelopTargetFrameworkClass)' == 'v2') "
Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- Override properties created by Microsoft.CSharp.targets -->
<PropertyGroup Condition=" '$(SharpDevelopUse1xCompiler)' == 'true' ">
<PropertyGroup Condition=" '$(SharpDevelopTargetFrameworkClass)' == 'v1' ">
<AssemblySearchPaths>
{CandidateAssemblyFiles};
$(ReferencePath);
@ -60,7 +64,7 @@ @@ -60,7 +64,7 @@
<TargetFrameworkDirectory>$(CscToolPath)</TargetFrameworkDirectory>
</PropertyGroup>
<ItemGroup Condition=" '$(SharpDevelopUse1xCompiler)' == 'true' ">
<ItemGroup Condition=" '$(SharpDevelopTargetFrameworkClass)' == 'v1' ">
<TargetFrameworkDirectoryItem Include="$(CscToolPath)">
<InProject>false</InProject>
</TargetFrameworkDirectoryItem>
@ -68,16 +72,16 @@ @@ -68,16 +72,16 @@
<!-- GetFrameworkPaths overwrites TargetFrameworkDirectory, so modify it -->
<!-- to be inactive if SharpDevelopUse1xCompiler is set. -->
<Target Name="GetFrameworkPaths" DependsOnTargets="$(GetFrameworkPathsDependsOn)" Condition=" '$(SharpDevelopUseMicrosoftFramework)' == 'true' ">
<Error Condition=" ('$(SharpDevelopUse1xCompiler)' == 'true') And !Exists('$(CscToolPath)\Csc.exe') "
<Target Name="GetFrameworkPaths" DependsOnTargets="$(GetFrameworkPathsDependsOn)" Condition=" ('$(SharpDevelopTargetFrameworkClass)' == 'v1') or ('$(SharpDevelopTargetFrameworkClass)' == 'v2') ">
<Error Condition=" ('$(SharpDevelopTargetFrameworkClass)' == 'v1') And !Exists('$(CscToolPath)\Csc.exe') "
Text="Could not find the C# compiler in $(CscToolPath)."/>
<GetFrameworkPath Condition=" '$(SharpDevelopUse1xCompiler)' != 'true' ">
<GetFrameworkPath Condition=" '$(SharpDevelopTargetFrameworkClass)' != 'v1' ">
<Output TaskParameter="Path" PropertyName="TargetFrameworkDirectory"/>
<Output TaskParameter="Path" ItemName="TargetFrameworkDirectoryItem"/>
</GetFrameworkPath>
<GetFrameworkSDKPath Condition=" '$(SharpDevelopUse1xCompiler)' != 'true' ">
<GetFrameworkSDKPath Condition=" '$(SharpDevelopTargetFrameworkClass)' != 'v1' ">
<Output TaskParameter="Path" PropertyName="TargetFrameworkSDKDirectory"/>
<Output TaskParameter="Path" ItemName="TargetFrameworkSDKDirectoryItem"/>
</GetFrameworkSDKPath>
@ -87,15 +91,24 @@ @@ -87,15 +91,24 @@
<Import Condition=" '$(TargetFrameworkVersion)' == 'Mono v1.1' " Project="$(SharpDevelopBinPath)\SharpDevelop.Build.Mono.Mcs.targets"/>
<Import Condition=" '$(TargetFrameworkVersion)' == 'Mono v2.0' " Project="$(SharpDevelopBinPath)\SharpDevelop.Build.Mono.Gmcs.targets"/>
<!-- Compact framework default platform values -->
<PropertyGroup Condition=" '$(SharpDevelopUseCompactFramework)' == 'true' ">
<!-- Compact framework property adjustments: -->
<!-- When StdLib is not set, set it to true and add reference to mscorlib -->
<!-- Set PlatformFamilyName and PlatformID if required -->
<PropertyGroup Condition=" '$(SharpDevelopTargetFrameworkClass)' == 'CF' ">
<PlatformFamilyName Condition=" '$(PlatformFamilyName)' == '' ">PocketPC</PlatformFamilyName>
<PlatformID Condition=" '$(PlatformID)' == '' ">WinCE</PlatformID>
<PlatformID Condition=" '$(PlatformID)' == '' ">WinCE</PlatformID>
<SharpDevelopAddReferenceToCompactMscorlib Condition="'$(NoStdLib)' == ''">true</SharpDevelopAddReferenceToCompactMscorlib>
<NoStdLib Condition="'$(NoStdLib)' == ''">true</NoStdLib>
</PropertyGroup>
<ItemGroup Condition=" '$(SharpDevelopAddReferenceToCompactMscorlib)' == 'true' ">
<Reference Include="mscorlib"/>
</ItemGroup>
<!-- Compact framework imports -->
<Import Condition=" ('$(TargetFrameworkVersion)' == 'v1.0') And ('$(SharpDevelopUseCompactFramework)' == 'true') "
<Import Condition=" '$(SharpDevelopTargetFrameworkVersion)' == 'CF 1.0' "
Project="$(MSBuildBinPath)\Microsoft.CompactFramework.CSharp.v1.targets"/>
<Import Condition=" ('$(TargetFrameworkVersion)' == 'v2.0') And ('$(SharpDevelopUseCompactFramework)' == 'true') "
<Import Condition=" '$(SharpDevelopTargetFrameworkVersion)' == 'CF 2.0' "
Project="$(MSBuildBinPath)\Microsoft.CompactFramework.CSharp.targets"/>
</Project>

20
src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.VisualBasic.targets

@ -28,8 +28,9 @@ @@ -28,8 +28,9 @@
<PlatformTarget/>
</PropertyGroup>
<PropertyGroup Condition=" '$(TargetFrameworkVersion)' == 'v2.0' ">
<SharpDevelopUseMicrosoftFramework>true</SharpDevelopUseMicrosoftFramework>
<PropertyGroup Condition=" ('$(TargetFrameworkVersion)' == 'v2.0') or ('$(TargetFrameworkVersion)' == '') ">
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
<SharpDevelopUseMicrosoftFramework>true</SharpDevelopUseMicrosoftFramework>
</PropertyGroup>
<PropertyGroup Condition=" '$(TargetFrameworkVersion)' == 'CF 1.0' ">
@ -157,12 +158,21 @@ @@ -157,12 +158,21 @@
<Import Condition=" '$(TargetFrameworkVersion)' == 'Mono v1.1' " Project="$(SharpDevelopBinPath)\SharpDevelop.Build.Mono.Mbas.targets"/>
<Import Condition=" '$(TargetFrameworkVersion)' == 'Mono v2.0' " Project="$(SharpDevelopBinPath)\SharpDevelop.Build.Mono.Mbas.targets"/>
<!-- Compact framework default platform values -->
<PropertyGroup Condition=" '$(SharpDevelopUseCompactFramework)' == 'true' ">
<!-- Compact framework property adjustments: -->
<!-- When StdLib is not set, set it to true and add reference to mscorlib -->
<!-- Set PlatformFamilyName and PlatformID if required -->
<PropertyGroup Condition=" '$(SharpDevelopTargetFrameworkClass)' == 'CF' ">
<PlatformFamilyName Condition=" '$(PlatformFamilyName)' == '' ">PocketPC</PlatformFamilyName>
<PlatformID Condition=" '$(PlatformID)' == '' ">WinCE</PlatformID>
<PlatformID Condition=" '$(PlatformID)' == '' ">WinCE</PlatformID>
<SharpDevelopAddReferenceToCompactMscorlib Condition="'$(NoStdLib)' == ''">true</SharpDevelopAddReferenceToCompactMscorlib>
<NoStdLib Condition="'$(NoStdLib)' == ''">true</NoStdLib>
</PropertyGroup>
<ItemGroup Condition=" '$(SharpDevelopAddReferenceToCompactMscorlib)' == 'true' ">
<Reference Include="mscorlib"/>
</ItemGroup>
<!-- Compact framework imports -->
<Import Condition=" ('$(TargetFrameworkVersion)' == 'v1.0') And ('$(SharpDevelopUseCompactFramework)' == 'true') "
Project="$(MSBuildBinPath)\Microsoft.CompactFramework.VisualBasic.v1.targets"/>

2
src/Libraries/ICSharpCode.TextEditor/Project/Resources/HTML-Mode.xshd

@ -32,7 +32,7 @@ @@ -32,7 +32,7 @@
<End>&lt;/script&gt;</End>
</Span>
<Span name="UnknownScriptTag" bold="false" italic="false" color="SpringGreen" stopateol="false">
<Begin>&lt;script</Begin>
<Begin>&lt;script@C</Begin>
<End>&lt;/script&gt;</End>
</Span>
<Span name="HtmlTag" rule="HtmlTagSet" bold="false" italic="false" color="DarkMagenta" stopateol="false">

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

@ -256,6 +256,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -256,6 +256,7 @@ namespace ICSharpCode.SharpDevelop.Dom
DefaultField f = new DefaultField(this, field.Name);
f.Modifiers = TranslateModifiers(field);
f.ReturnType = CreateType(this.ProjectContent, this, field.FieldType);
AddAttributes(CompilationUnit.ProjectContent, f.Attributes, field.CustomAttributes);
Fields.Add(f);
}
}
@ -277,6 +278,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -277,6 +278,7 @@ namespace ICSharpCode.SharpDevelop.Dom
p.IsIndexer = true;
}
AddParameters(p, property.Parameters);
AddAttributes(CompilationUnit.ProjectContent, p.Attributes, property.CustomAttributes);
Properties.Add(p);
}
}
@ -290,6 +292,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -290,6 +292,7 @@ namespace ICSharpCode.SharpDevelop.Dom
e.Modifiers = TranslateModifiers(eventDef);
}
e.ReturnType = CreateType(this.ProjectContent, this, eventDef.EventType);
AddAttributes(CompilationUnit.ProjectContent, e.Attributes, eventDef.CustomAttributes);
Events.Add(e);
}
}
@ -320,6 +323,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -320,6 +323,7 @@ namespace ICSharpCode.SharpDevelop.Dom
}
m.ReturnType = CreateType(this.ProjectContent, m, method.ReturnType.ReturnType);
AddAttributes(CompilationUnit.ProjectContent, m.Attributes, method.CustomAttributes);
if (this.ClassType == ClassType.Interface) {
m.Modifiers = ModifierEnum.Public | ModifierEnum.Abstract;
} else {

14
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/SearchClassReturnType.cs

@ -114,14 +114,16 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -114,14 +114,16 @@ namespace ICSharpCode.SharpDevelop.Dom
lock (cache) {
if (cache.TryGetValue(this, out type))
return type;
try {
isSearching = true;
type = pc.SearchType(new SearchTypeRequest(name, typeParameterCount, declaringClass, caretLine, caretColumn)).Result;
}
try {
isSearching = true;
type = pc.SearchType(new SearchTypeRequest(name, typeParameterCount, declaringClass, caretLine, caretColumn)).Result;
lock (cache) {
cache[this] = type;
return type;
} finally {
isSearching = false;
}
return type;
} finally {
isSearching = false;
}
}
}

Loading…
Cancel
Save