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. 18
      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
protected override ParseProjectContent CreateProjectContent() 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) { if (BooCompilerPC == null) {
ReferenceProjectItem booCompilerItem = new ReferenceProjectItem(this, typeof(Boo.Lang.Compiler.AbstractAstAttribute).Assembly.Location); ReferenceProjectItem booCompilerItem = new ReferenceProjectItem(this, typeof(Boo.Lang.Compiler.AbstractAstAttribute).Assembly.Location);
BooCompilerPC = ParserService.GetProjectContentForReference(booCompilerItem); BooCompilerPC = ParserService.GetProjectContentForReference(booCompilerItem);
} }
if (BooUsefulPC == null) { if (BooUsefulPC == null) {
ReferenceProjectItem booUsefulItem = new ReferenceProjectItem(this, typeof(Boo.Lang.Useful.Attributes.SingletonAttribute).Assembly.Location); 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 = new DefaultUsing(pc);
pc.DefaultImports.Usings.Add("Boo.Lang"); pc.DefaultImports.Usings.Add("Boo.Lang");
pc.DefaultImports.Usings.Add("Boo.Lang.Builtins"); pc.DefaultImports.Usings.Add("Boo.Lang.Builtins");

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

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

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

@ -28,7 +28,8 @@
<PlatformTarget/> <PlatformTarget/>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(TargetFrameworkVersion)' == 'v2.0' "> <PropertyGroup Condition=" ('$(TargetFrameworkVersion)' == 'v2.0') or ('$(TargetFrameworkVersion)' == '') ">
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
<SharpDevelopUseMicrosoftFramework>true</SharpDevelopUseMicrosoftFramework> <SharpDevelopUseMicrosoftFramework>true</SharpDevelopUseMicrosoftFramework>
</PropertyGroup> </PropertyGroup>
@ -157,12 +158,21 @@
<Import Condition=" '$(TargetFrameworkVersion)' == 'Mono v1.1' " Project="$(SharpDevelopBinPath)\SharpDevelop.Build.Mono.Mbas.targets"/> <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"/> <Import Condition=" '$(TargetFrameworkVersion)' == 'Mono v2.0' " Project="$(SharpDevelopBinPath)\SharpDevelop.Build.Mono.Mbas.targets"/>
<!-- Compact framework default platform values --> <!-- Compact framework property adjustments: -->
<PropertyGroup Condition=" '$(SharpDevelopUseCompactFramework)' == 'true' "> <!-- 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> <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> </PropertyGroup>
<ItemGroup Condition=" '$(SharpDevelopAddReferenceToCompactMscorlib)' == 'true' ">
<Reference Include="mscorlib"/>
</ItemGroup>
<!-- Compact framework imports --> <!-- Compact framework imports -->
<Import Condition=" ('$(TargetFrameworkVersion)' == 'v1.0') And ('$(SharpDevelopUseCompactFramework)' == 'true') " <Import Condition=" ('$(TargetFrameworkVersion)' == 'v1.0') And ('$(SharpDevelopUseCompactFramework)' == 'true') "
Project="$(MSBuildBinPath)\Microsoft.CompactFramework.VisualBasic.v1.targets"/> Project="$(MSBuildBinPath)\Microsoft.CompactFramework.VisualBasic.v1.targets"/>

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

@ -32,7 +32,7 @@
<End>&lt;/script&gt;</End> <End>&lt;/script&gt;</End>
</Span> </Span>
<Span name="UnknownScriptTag" bold="false" italic="false" color="SpringGreen" stopateol="false"> <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> <End>&lt;/script&gt;</End>
</Span> </Span>
<Span name="HtmlTag" rule="HtmlTagSet" bold="false" italic="false" color="DarkMagenta" stopateol="false"> <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
DefaultField f = new DefaultField(this, field.Name); DefaultField f = new DefaultField(this, field.Name);
f.Modifiers = TranslateModifiers(field); f.Modifiers = TranslateModifiers(field);
f.ReturnType = CreateType(this.ProjectContent, this, field.FieldType); f.ReturnType = CreateType(this.ProjectContent, this, field.FieldType);
AddAttributes(CompilationUnit.ProjectContent, f.Attributes, field.CustomAttributes);
Fields.Add(f); Fields.Add(f);
} }
} }
@ -277,6 +278,7 @@ namespace ICSharpCode.SharpDevelop.Dom
p.IsIndexer = true; p.IsIndexer = true;
} }
AddParameters(p, property.Parameters); AddParameters(p, property.Parameters);
AddAttributes(CompilationUnit.ProjectContent, p.Attributes, property.CustomAttributes);
Properties.Add(p); Properties.Add(p);
} }
} }
@ -290,6 +292,7 @@ namespace ICSharpCode.SharpDevelop.Dom
e.Modifiers = TranslateModifiers(eventDef); e.Modifiers = TranslateModifiers(eventDef);
} }
e.ReturnType = CreateType(this.ProjectContent, this, eventDef.EventType); e.ReturnType = CreateType(this.ProjectContent, this, eventDef.EventType);
AddAttributes(CompilationUnit.ProjectContent, e.Attributes, eventDef.CustomAttributes);
Events.Add(e); Events.Add(e);
} }
} }
@ -320,6 +323,7 @@ namespace ICSharpCode.SharpDevelop.Dom
} }
m.ReturnType = CreateType(this.ProjectContent, m, method.ReturnType.ReturnType); m.ReturnType = CreateType(this.ProjectContent, m, method.ReturnType.ReturnType);
AddAttributes(CompilationUnit.ProjectContent, m.Attributes, method.CustomAttributes);
if (this.ClassType == ClassType.Interface) { if (this.ClassType == ClassType.Interface) {
m.Modifiers = ModifierEnum.Public | ModifierEnum.Abstract; m.Modifiers = ModifierEnum.Public | ModifierEnum.Abstract;
} else { } else {

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

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

Loading…
Cancel
Save