Merge pull request #3080 from BrzVlad/feature-enable-conc-master
authorRodrigo Kumpera <kumpera@gmail.com>
Tue, 31 May 2016 20:58:09 +0000 (13:58 -0700)
committerRodrigo Kumpera <kumpera@gmail.com>
Tue, 31 May 2016 20:58:09 +0000 (13:58 -0700)
[sgen] Enable concurrent major by default on desktop platforms

72 files changed:
build-libs.bat
build-libs.sh
mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng-net_4_x.csproj
mcs/class/Microsoft.Build/Microsoft.Build-net_4_x.csproj
mcs/class/Mono.Data.Sqlite/Makefile
mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite-net_4_x.csproj
mcs/class/Mono.Data.Sqlite/resources/SR.resx
mcs/class/RabbitMQ.Client/src/apigen/RabbitMQ.Client.Apigen-net_4_x.csproj
mcs/class/System.ComponentModel.Composition.4.5/System.ComponentModel.Composition-net_4_x.csproj
mcs/class/System.Data.Services.Client/System.Data.Services.Client-net_4_x.csproj
mcs/class/System.Reactive.Core/System.Reactive.Core-net_4_x.csproj
mcs/class/System.Reactive.Linq/System.Reactive.Linq-net_4_x.csproj
mcs/class/System.Reactive.PlatformServices/System.Reactive.PlatformServices-net_4_x.csproj
mcs/class/System.Reactive.Providers/System.Reactive.Providers-net_4_x.csproj
mcs/class/System.Reactive.Windows.Threading/System.Reactive.Windows.Threading-net_4_x.csproj
mcs/class/System.Web.Razor/System.Web.Razor-net_4_x.csproj
mcs/class/System.Web/System.Web-net_4_x.csproj
mcs/class/System.Web/System.Web-plainweb-net_4_x.csproj
mcs/class/System.Windows.Forms/System.Windows.Forms-net_4_x.csproj
mcs/class/System/System-bare-net_4_x.csproj
mcs/class/System/System-net_4_x.csproj
mcs/class/System/System-secxml-net_4_x.csproj
mcs/class/monodoc/monodoc-net_4_x.csproj
mcs/ilasm/ilasm-net_4_x.csproj
mcs/mcs/ecore.cs
mcs/mcs/mcs-net_4_x.csproj
mcs/tests/test-935.cs [new file with mode: 0644]
mcs/tests/ver-il-net_4_x.xml
mcs/tools/mconfig/Makefile
mcs/tools/mconfig/Mono.MonoConfig/consts.cs.in [deleted file]
mcs/tools/mconfig/mconfig-net_4_x.csproj
mcs/tools/mconfig/mconfig.cs
mcs/tools/mdoc/Makefile
mcs/tools/mdoc/Mono.Documentation/monodocer.cs
mcs/tools/mdoc/Test/DocTest-DropNS-classic.cs
mcs/tools/mdoc/Test/DocTest-DropNS-unified.cs
mcs/tools/mdoc/Test/en.expected-dropns-classic-v1/MyFramework.MyNamespace/MyClass.xml
mcs/tools/mdoc/Test/en.expected-dropns-classic-v1/MyFramework.MyNamespace/MyClassExtensions.xml [new file with mode: 0644]
mcs/tools/mdoc/Test/en.expected-dropns-classic-v1/index.xml
mcs/tools/mdoc/Test/en.expected-dropns-classic-withsecondary/MyFramework.MyNamespace/MyClass.xml
mcs/tools/mdoc/Test/en.expected-dropns-classic-withsecondary/MyFramework.MyNamespace/MyClassExtensions.xml [new file with mode: 0644]
mcs/tools/mdoc/Test/en.expected-dropns-classic-withsecondary/MyFramework.MyOtherNamespace/MyOtherClass.xml
mcs/tools/mdoc/Test/en.expected-dropns-classic-withsecondary/index.xml
mcs/tools/mdoc/Test/en.expected-dropns-delete/MyFramework.MyNamespace/MyClass.xml
mcs/tools/mdoc/Test/en.expected-dropns-delete/MyFramework.MyNamespace/MyClassExtensions.xml [new file with mode: 0644]
mcs/tools/mdoc/Test/en.expected-dropns-delete/MyFramework.MyNamespace/TypeOnlyInClassic.xml
mcs/tools/mdoc/Test/en.expected-dropns-delete/MyFramework.MyNamespace/WillDelete.xml.remove
mcs/tools/mdoc/Test/en.expected-dropns-delete/index.xml
mcs/tools/mdoc/Test/en.expected-dropns-multi-withexisting/MyFramework.MyNamespace/MyClass.xml
mcs/tools/mdoc/Test/en.expected-dropns-multi-withexisting/MyFramework.MyNamespace/MyClassExtensions.xml [new file with mode: 0644]
mcs/tools/mdoc/Test/en.expected-dropns-multi-withexisting/index.xml
mcs/tools/mdoc/Test/en.expected-dropns-multi/MyFramework.MyNamespace/MyClassExtensions.xml [new file with mode: 0644]
mcs/tools/mdoc/Test/en.expected-dropns-multi/index.xml
mono/metadata/sgen-client-mono.h
mono/metadata/sgen-mono.c
mono/sgen/sgen-cardtable.c
mono/sgen/sgen-gc.c
mono/sgen/sgen-gc.h
mono/sgen/sgen-marksweep-drain-gray-stack.h
mono/sgen/sgen-marksweep.c
mono/sgen/sgen-pinning-stats.c
mono/sgen/sgen-protocol-def.h
msvc/scripts/Microsoft.Build.pre [new file with mode: 0644]
msvc/scripts/System.ComponentModel.Composition.pre [new file with mode: 0644]
msvc/scripts/System.Data.Services.Client.pre [new file with mode: 0644]
msvc/scripts/System.Web.Razor.pre [new file with mode: 0644]
msvc/scripts/TODO.md [new file with mode: 0644]
msvc/scripts/genproj.cs
msvc/scripts/ilasm.pre [new file with mode: 0644]
msvc/scripts/mcs.pre
msvc/scripts/order.xml
msvc/scripts/prepare.cs

index df0d97868d65d778413196ac1edfa52ca1d49991..342a6b8daf3a953dbaf70727877c9ef3ac61b57b 100644 (file)
@@ -1,4 +1,7 @@
 @echo off
 cd mcs\jay
 vcbuild jay.vcxproj
+cd msvc\scripts
+csc prepare.cs
+prepare.exe ..\..\mcs core
 msbuild net_4_x.sln
index 1b339764f8882e235cf17df74826f6987e4b0074..f7583abaa03f6ada46c8a91cd52c828e9f642da6 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh
 (cd mcs/jay; make)
-(cd msvc/scripts/; make prepare.exe; mono prepare.exe `pwd`/mcs core)
+(cd msvc/scripts/; make prepare.exe; mono prepare.exe ../../mcs core)
 msbuild net_4_x.sln
index 3d8430294067191c48a165e460c4435327689cc3..2539a5b4b18c3ab5907432eedf73d113a3b8b53d 100644 (file)
@@ -101,7 +101,7 @@ $(ProjectDir)\..\..\jay\jay -ct &lt; $(ProjectDir)\..\..\jay\skeleton.cs $(Proje
 
     </PreBuildEvent>\r
     <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-$(ProjectDir)\..\..\jay\jay.exe -ct &lt; $(ProjectDir)\..\..\jay\skeleton.cs $(ProjectDir)\Commons.Xml.Relaxng.Rnc\RncParser.jay > $(ProjectDir)\Commons.Xml.Relaxng.Rnc\RncParser.cs
+$(ProjectDir)\..\..\jay\jay -ct &lt; $(ProjectDir)\..\..\jay\skeleton.cs $(ProjectDir)\Commons.Xml.Relaxng.Rnc\RncParser.jay > $(ProjectDir)\Commons.Xml.Relaxng.Rnc\RncParser.cs
 \r
     </PreBuildEvent>\r
     <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
index 5c8625482862a1226106901042b315a3cff8c42d..24dd6dd3751303edd192404062260cb9e7a61500 100644 (file)
   -->\r
   <PropertyGroup>\r
     <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+$(ProjectDir)\..\..\jay\jay -ct &lt; $(ProjectDir)\..\..\jay\skeleton.cs $(ProjectDir)\Microsoft.Build.Internal\ExpressionParser.jay > $(ProjectDir)\Microsoft.Build.Internal\ExpressionParser.cs
 
     </PreBuildEvent>\r
     <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
+$(ProjectDir)\..\..\jay\jay -ct &lt; $(ProjectDir)\..\..\jay\skeleton.cs $(ProjectDir)\Microsoft.Build.Internal\ExpressionParser.jay > $(ProjectDir)\Microsoft.Build.Internal\ExpressionParser.cs
 \r
     </PreBuildEvent>\r
     <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
index a5453d47d276e77ca89d54779f5ff3929f886483..35eb5c1bb817dd6868bb67a56c04783756f440be 100644 (file)
@@ -42,5 +42,5 @@ $(PREBUILT): %.prebuilt: %
        cp $* $@
 
 $(RESX_RESOURCES): %.resources: %.resx
-       $(RESGEN) $< || cp $@.prebuilt $@
+       $(RESGEN) -useSourcePath $< || cp $@.prebuilt $@
 
index 2b722aaff49d9c9feaa9a84a9495827c537e3655..7a1ee0ced12a4d53865db6a531fc8e46ddc87f7b 100644 (file)
     <Folder Include="Properties\" />\r
   </ItemGroup>\r
   <ItemGroup>\r
-    <EmbeddedResource Include="resources/SR.resx">\r
+    <EmbeddedResource Include="resources/SR.resources.prebuilt">\r
       <LogicalName>SR.resources</LogicalName>\r
     </EmbeddedResource>\r
     <EmbeddedResource Include="resources/SQLiteCommand.bmp">\r
index 9851beb1a81637581419d04c1504ba9e619ff1de..082a3e024a76a38b799eb62d7623cc7ab73b11ab 100644 (file)
   </resheader>\r
   <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />\r
   <data name="DataTypes" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
-    <value>resources/DataTypes.xml;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>\r
+    <value>DataTypes.xml;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>\r
   </data>\r
   <data name="Keywords" xml:space="preserve">\r
     <value>ALL,ALTER,AND,AS,AUTOINCREMENT,BETWEEN,BY,CASE,CHECK,COLLATE,COMMIT,CONSTRAINT,CREATE,CROSS,DEFAULT,DEFERRABLE,DELETE,DISTINCT,DROP,ELSE,ESCAPE,EXCEPT,FOREIGN,FROM,FULL,GROUP,HAVING,IN,INDEX,INNER,INSERT,INTERSECT,INTO,IS,ISNULL,JOIN,LEFT,LIMIT,NATURAL,NOT,NOTNULL,NULL,ON,OR,ORDER,OUTER,PRIMARY,REFERENCES,RIGHT,ROLLBACK,SELECT,SET,TABLE,THEN,TO,TRANSACTION,UNION,UNIQUE,UPDATE,USING,VALUES,WHEN,WHERE</value>\r
   </data>\r
   <data name="MetaDataCollections" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
-    <value>resources/MetaDataCollections.xml;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>\r
+    <value>MetaDataCollections.xml;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>\r
   </data>\r
-</root>
\ No newline at end of file
+</root>\r
index 774bd89e35cbaf42a517229146f7243dde3e5038..21fe03503f4fba1d875c8834f261957f834cef81 100644 (file)
@@ -92,9 +92,9 @@ mono RabbitMQ.Client.Apigen.exe /n:v0_8qpid "/apiName:AMQP_0_8_QPID" $(ProjectDi
 
     </PostBuildEvent>\r
     <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
- RabbitMQ.Client.Apigen.exe /n:v0_9 "/apiName:AMQP_0_9" $(ProjectDir)..\..\docs\specs\amqp0-9.stripped.xml $(ProjectDir)..\..\docs\specs\net_4_x-api-0-9.cs
- RabbitMQ.Client.Apigen.exe /n:v0_8 "/apiName:AMQP_0_8" $(ProjectDir)..\..\docs\specs\amqp0-8.stripped.xml $(ProjectDir)..\..\docs\specs\net_4_x-api-0-8.cs
- RabbitMQ.Client.Apigen.exe /n:v0_8qpid "/apiName:AMQP_0_8_QPID" $(ProjectDir)..\..\docs\specs\qpid-amqp.0-8.stripped.xml $(ProjectDir)..\..\docs\specs\net_4_x-api-qpid-0-8.cs
+mono RabbitMQ.Client.Apigen.exe /n:v0_9 "/apiName:AMQP_0_9" $(ProjectDir)..\..\docs\specs\amqp0-9.stripped.xml $(ProjectDir)..\..\docs\specs\net_4_x-api-0-9.cs
+mono RabbitMQ.Client.Apigen.exe /n:v0_8 "/apiName:AMQP_0_8" $(ProjectDir)..\..\docs\specs\amqp0-8.stripped.xml $(ProjectDir)..\..\docs\specs\net_4_x-api-0-8.cs
+mono RabbitMQ.Client.Apigen.exe /n:v0_8qpid "/apiName:AMQP_0_8_QPID" $(ProjectDir)..\..\docs\specs\qpid-amqp.0-8.stripped.xml $(ProjectDir)..\..\docs\specs\net_4_x-api-qpid-0-8.cs
 
 
 
index 7f8014de96be2c404d1e2fb33ce5db5de55df652..a676a9be185897d8d4b914c88a57ace42cf0eada 100644 (file)
   -->\r
   <PropertyGroup>\r
     <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
+resgen $(ProjectDir)\src\ComponentModel\Strings.resx $(ProjectDir)\Microsoft.Internal.Strings.resx
     </PreBuildEvent>\r
     <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
+resgen $(ProjectDir)\src\ComponentModel\Strings.resx $(ProjectDir)\Microsoft.Internal.Strings.resx\r
     </PreBuildEvent>\r
     <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
 
index 86f2abd37b1638c00c0730e3b4a28e6667890b35..55b9e130c8cb94ae7b31498208e72f82e704d284 100644 (file)
   -->\r
   <PropertyGroup>\r
     <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
+resgen $(ProjectDir)\Client\System.Data.Services.Client.txt $(ProjectDir)\Client\System.Data.Services.Client.resx
     </PreBuildEvent>\r
     <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
+resgen $(ProjectDir)\Client\System.Data.Services.Client.txt $(ProjectDir)\Client\System.Data.Services.Client.resx\r
     </PreBuildEvent>\r
     <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
 
index 0a372455e9cdebcadb0ec219c9349e5b4d47263c..7b3dfa248deb2b63a1acb932b86e6159e12da601 100644 (file)
     <Folder Include="Properties\" />\r
   </ItemGroup>\r
   <ItemGroup>\r
-    <EmbeddedResource Include="Strings_Core.resx">\r
+    <EmbeddedResource Include="Strings_Core.resources.prebuilt">\r
       <LogicalName>System.Reactive.Strings_Core.resources</LogicalName>\r
     </EmbeddedResource>\r
   </ItemGroup>\r
index cd90704cc90c9fc098e3b348e57b6ffdd5f7e291..67b2b8a8844cc12c1ecf09fdb1ff9da5ae8edbae 100644 (file)
     <Folder Include="Properties\" />\r
   </ItemGroup>\r
   <ItemGroup>\r
-    <EmbeddedResource Include="Strings_Linq.resx">\r
+    <EmbeddedResource Include="Strings_Linq.resources.prebuilt">\r
       <LogicalName>System.Reactive.Strings_Linq.resources</LogicalName>\r
     </EmbeddedResource>\r
   </ItemGroup>\r
index 6b5d1cfbe8318344512ef82ab964bea5e98e9596..538ff9529d94ea3bd5a2ad3e223c27f652e82fa0 100644 (file)
     <Folder Include="Properties\" />\r
   </ItemGroup>\r
   <ItemGroup>\r
-    <EmbeddedResource Include="Strings_PlatformServices.resx">\r
+    <EmbeddedResource Include="Strings_PlatformServices.resources.prebuilt">\r
       <LogicalName>System.Reactive.Strings_PlatformServices.resources</LogicalName>\r
     </EmbeddedResource>\r
   </ItemGroup>\r
index 3fd5344a43b50e3714e68197661d0640f50bcc9a..0099448bd54ccb6132e7b2184164293adc9b2ec2 100644 (file)
     <Folder Include="Properties\" />\r
   </ItemGroup>\r
   <ItemGroup>\r
-    <EmbeddedResource Include="Strings_Providers.resx">\r
+    <EmbeddedResource Include="Strings_Providers.resources.prebuilt">\r
       <LogicalName>System.Reactive.Strings_Providers.resources</LogicalName>\r
     </EmbeddedResource>\r
   </ItemGroup>\r
index abb30575708aa4226193b6ba5477e9344a96feb7..2399dc270ca57124a3c099787d3a8175fd4cd871 100644 (file)
     <Folder Include="Properties\" />\r
   </ItemGroup>\r
   <ItemGroup>\r
-    <EmbeddedResource Include="Strings_WindowsThreading.resx">\r
+    <EmbeddedResource Include="Strings_WindowsThreading.resources.prebuilt">\r
       <LogicalName>System.Reactive.Strings_WindowsThreading.resources</LogicalName>\r
     </EmbeddedResource>\r
   </ItemGroup>\r
index 495234806c5aeb054e9d7462b682a03cba6485c8..561a784fa70bb482782f90d771c851aaed438d51 100644 (file)
   -->\r
   <PropertyGroup>\r
     <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
+resgen $(ProjectDir)\..\..\..\external\aspnetwebstack\src\CommonResources.resx $(ProjectDir)\System.Web.Razor.Common.CommonResources.resx
+resgen $(ProjectDir)\..\..\..\external\aspnetwebstack\src\System.Web.Razor\Resources\RazorResources.resx $(ProjectDir)\System.Web.Razor.Resources.RazorResources.resx
     </PreBuildEvent>\r
     <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
+resgen $(ProjectDir)\..\..\..\external\aspnetwebstack\src\CommonResources.resx $(ProjectDir)\System.Web.Razor.Common.CommonResources.resx
+resgen $(ProjectDir)\..\..\..\external\aspnetwebstack\src\System.Web.Razor\Resources\RazorResources.resx $(ProjectDir)\System.Web.Razor.Resources.RazorResources.resx\r
     </PreBuildEvent>\r
     <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
 
index c3cd7cc5262760c37a0f5f22aeed89da1c81bf3c..109abe9ccc9d0ee5af11640349a3cd946d75ac43 100644 (file)
   -->\r
   <PropertyGroup>\r
     <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+mono $(ProjectDir)\..\lib\net_4_x\culevel.exe -o $(ProjectDir)\System.Web\UplevelHelper.cs $(ProjectDir)\UplevelHelperDefinitions.xml
+
 
     </PreBuildEvent>\r
     <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
+mono $(ProjectDir)\..\lib\net_4_x\culevel.exe -o $(ProjectDir)\System.Web\UplevelHelper.cs $(ProjectDir)\UplevelHelperDefinitions.xml
+
 \r
     </PreBuildEvent>\r
     <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
index 1cff71822308af45d45c170da6acfc5aa0d7bff6..9d01a0e639843788b1b0d95aed5c7435b61d9849 100644 (file)
   -->\r
   <PropertyGroup>\r
     <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+mono $(ProjectDir)\..\lib\net_4_x\culevel.exe -o $(ProjectDir)\System.Web\UplevelHelper.cs $(ProjectDir)\UplevelHelperDefinitions.xml
+
 
     </PreBuildEvent>\r
     <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
+mono $(ProjectDir)\..\lib\net_4_x\culevel.exe -o $(ProjectDir)\System.Web\UplevelHelper.cs $(ProjectDir)\UplevelHelperDefinitions.xml
+
 \r
     </PreBuildEvent>\r
     <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
index 52e2326bdce8362c55bf0f232c115db28e5b1c18..c1e931e0a9b631f15f767dc754ddaefec8e4bd9b 100644 (file)
     <EmbeddedResource Include="resources/DnDMove.cur">\r
       <LogicalName>System.Windows.Forms.DnDMove.cur</LogicalName>\r
     </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/keyboards.resx">\r
+    <EmbeddedResource Include="resources/keyboards.resources.prebuilt">\r
       <LogicalName>keyboards.resources</LogicalName>\r
     </EmbeddedResource>\r
     <EmbeddedResource Include="resources/16_computer.png">\r
index 3419b1ba3ada43d1da8920fe76950b33d065b0b6..d145183c3309a7e1a5663166758fbc38243f45b3 100644 (file)
@@ -28,7 +28,7 @@
     <DebugType>full</DebugType>\r
     <NoWarn>1699,618</NoWarn>\r
     <Optimize>false</Optimize>\r
-    <DefineConstants>TRACE;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;MONO_FEATURE_PROCESS_START;MONO_FEATURE_THREAD_ABORT;MONO_FEATURE_THREAD_SUSPEND_RESUME</DefineConstants>\r
+    <DefineConstants>TRACE;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;MONO_FEATURE_PROCESS_START;MONO_FEATURE_THREAD_ABORT;MONO_FEATURE_THREAD_SUSPEND_RESUME;MONO_FEATURE_MULTIPLE_APPDOMAINS</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -36,7 +36,7 @@
     <DebugType>pdbonly</DebugType>\r
     <NoWarn>1699,618</NoWarn>\r
     <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;MONO_FEATURE_PROCESS_START;MONO_FEATURE_THREAD_ABORT;MONO_FEATURE_THREAD_SUSPEND_RESUME</DefineConstants>\r
+    <DefineConstants>NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;MONO_FEATURE_PROCESS_START;MONO_FEATURE_THREAD_ABORT;MONO_FEATURE_THREAD_SUSPEND_RESUME;MONO_FEATURE_MULTIPLE_APPDOMAINS</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
     <Compile Include="..\referencesource\System\net\System\IriHelper.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\_BufferOffsetSize.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\_Connection.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\_emptywebproxy.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\_HeaderInfo.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\_HeaderInfoTable.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\_HTTPDateParse.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\_LazyAsyncResult.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\_LoggingObject.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\_NetRes.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\_ProxyChain.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\_ScatterGatherBuffers.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\_TimerThread.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\_WebProxyDataBuilder.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\AuthenticationScheme.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\AuthenticationSchemeSelector.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\Authorization.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\Cache\RequestCache.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\Cache\RequestCacheEntry.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\Cache\RequestCacheManager.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\Cache\RequestCachePolicy.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\Configuration\DefaultProxySection.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\cookie.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\cookiecollection.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\cookiecontainer.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\cookieexception.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\CredentialCache.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\DnsEndPoint.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\EndPoint.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\filewebrequest.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\filewebresponse.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\FtpStatusCode.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\GlobalProxySelection.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\HttpListenerException.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\HttpListenerRequestUriBuilder.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\HttpRequestHeader.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\IPEndPoint.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\IPHostEntry.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\iwebproxy.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\IWebProxyFinder.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\IWebRequestCreate.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\mail\Base64Stream.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\mail\Base64WriteStateInfo.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\WebExceptionStatus.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\WebHeaderCollection.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\WebPermission.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\webproxy.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\WebRequest.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\WebRequestMethods.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\WebResponse.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\WebUtility.cs" />\r
     <Compile Include="ReferenceSources\_SslState.cs" />\r
     <Compile Include="ReferenceSources\_SslStream.cs" />\r
     <Compile Include="ReferenceSources\AssertWrapper.cs" />\r
+    <Compile Include="ReferenceSources\AutoWebProxyScriptEngine.cs" />\r
     <Compile Include="ReferenceSources\BinaryCompatibility.cs" />\r
     <Compile Include="ReferenceSources\CAPI.cs" />\r
     <Compile Include="ReferenceSources\ConfigurationManagerInternalFactory.cs" />\r
     <Compile Include="ReferenceSources\Internal.cs" />\r
     <Compile Include="ReferenceSources\Logging.cs" />\r
     <Compile Include="ReferenceSources\NativeMethods.cs" />\r
+    <Compile Include="ReferenceSources\RequestCacheProtocol.cs" />\r
     <Compile Include="ReferenceSources\SettingsSectionInternal.cs" />\r
     <Compile Include="ReferenceSources\Socket.cs" />\r
     <Compile Include="ReferenceSources\SR.cs" />\r
     <Compile Include="ReferenceSources\SSPIConfiguration.cs" />\r
     <Compile Include="ReferenceSources\SSPISafeHandles.cs" />\r
     <Compile Include="ReferenceSources\SSPIWrapper.cs" />\r
-    <Compile Include="ReferenceSources\SystemNetworkCredential.cs" />\r
     <Compile Include="ReferenceSources\Win32Exception.cs" />\r
     <Compile Include="System.CodeDom.Compiler\CodeCompiler.cs" />\r
     <Compile Include="System.CodeDom.Compiler\CodeDomConfigurationHandler.cs" />\r
     <Compile Include="System.Net\BindIPEndPoint.cs" />\r
     <Compile Include="System.Net\ChunkedInputStream.cs" />\r
     <Compile Include="System.Net\ChunkStream.cs" />\r
-    <Compile Include="System.Net\CredentialCache.cs" />\r
     <Compile Include="System.Net\DecompressionMethods.cs" />\r
     <Compile Include="System.Net\DefaultCertificatePolicy.cs" />\r
     <Compile Include="System.Net\DigestClient.cs" />\r
     <Compile Include="System.Net\FtpStatus.cs" />\r
     <Compile Include="System.Net\FtpWebRequest.cs" />\r
     <Compile Include="System.Net\FtpWebResponse.cs" />\r
-    <Compile Include="System.Net\GlobalProxySelection.cs" />\r
     <Compile Include="System.Net\HttpConnection.cs" />\r
     <Compile Include="System.Net\HttpListener.cs" />\r
     <Compile Include="System.Net\HttpListenerBasicIdentity.cs" />\r
     <Compile Include="System.Net\WebConnectionData.cs" />\r
     <Compile Include="System.Net\WebConnectionGroup.cs" />\r
     <Compile Include="System.Net\WebConnectionStream.cs" />\r
-    <Compile Include="System.Net\WebProxy.cs" />\r
-    <Compile Include="System.Net\WebRequest.cs" />\r
     <Compile Include="System.Runtime.InteropServices.ComTypes\ADVF.cs" />\r
     <Compile Include="System.Runtime.InteropServices.ComTypes\DATADIR.cs" />\r
     <Compile Include="System.Runtime.InteropServices.ComTypes\DVASPECT.cs" />\r
index 757869a3165e88a36667fb9b1e13f20b0f681056..5a955e92850db5d760606b618e4ad96e4bde2cd9 100644 (file)
@@ -28,7 +28,7 @@
     <DebugType>full</DebugType>\r
     <NoWarn>1699,618</NoWarn>\r
     <Optimize>false</Optimize>\r
-    <DefineConstants>TRACE;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;MONO_FEATURE_PROCESS_START;MONO_FEATURE_THREAD_ABORT;MONO_FEATURE_THREAD_SUSPEND_RESUME;SECURITY_DEP;XML_DEP;MONO_SECURITY_ALIAS;CONFIGURATION_DEP</DefineConstants>\r
+    <DefineConstants>TRACE;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;MONO_FEATURE_PROCESS_START;MONO_FEATURE_THREAD_ABORT;MONO_FEATURE_THREAD_SUSPEND_RESUME;MONO_FEATURE_MULTIPLE_APPDOMAINS;SECURITY_DEP;XML_DEP;MONO_SECURITY_ALIAS;CONFIGURATION_DEP</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -36,7 +36,7 @@
     <DebugType>pdbonly</DebugType>\r
     <NoWarn>1699,618</NoWarn>\r
     <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;MONO_FEATURE_PROCESS_START;MONO_FEATURE_THREAD_ABORT;MONO_FEATURE_THREAD_SUSPEND_RESUME;SECURITY_DEP;XML_DEP;MONO_SECURITY_ALIAS;CONFIGURATION_DEP</DefineConstants>\r
+    <DefineConstants>NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;MONO_FEATURE_PROCESS_START;MONO_FEATURE_THREAD_ABORT;MONO_FEATURE_THREAD_SUSPEND_RESUME;MONO_FEATURE_MULTIPLE_APPDOMAINS;SECURITY_DEP;XML_DEP;MONO_SECURITY_ALIAS;CONFIGURATION_DEP</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
     <Compile Include="..\referencesource\System\net\System\IriHelper.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\_BufferOffsetSize.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\_Connection.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\_emptywebproxy.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\_HeaderInfo.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\_HeaderInfoTable.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\_HTTPDateParse.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\_LazyAsyncResult.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\_LoggingObject.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\_NetRes.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\_ProxyChain.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\_ScatterGatherBuffers.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\_TimerThread.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\_WebProxyDataBuilder.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\AuthenticationScheme.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\AuthenticationSchemeSelector.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\Authorization.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\Cache\RequestCache.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\Cache\RequestCacheEntry.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\Cache\RequestCacheManager.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\Cache\RequestCachePolicy.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\Configuration\DefaultProxySection.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\cookie.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\cookiecollection.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\cookiecontainer.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\cookieexception.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\CredentialCache.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\DnsEndPoint.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\EndPoint.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\filewebrequest.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\filewebresponse.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\FtpStatusCode.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\GlobalProxySelection.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\HttpListenerException.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\HttpListenerRequestUriBuilder.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\HttpRequestHeader.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\IPEndPoint.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\IPHostEntry.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\iwebproxy.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\IWebProxyFinder.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\IWebRequestCreate.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\mail\Base64Stream.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\mail\Base64WriteStateInfo.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\WebExceptionStatus.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\WebHeaderCollection.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\WebPermission.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\webproxy.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\WebRequest.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\WebRequestMethods.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\WebResponse.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\WebUtility.cs" />\r
     <Compile Include="ReferenceSources\_SslState.cs" />\r
     <Compile Include="ReferenceSources\_SslStream.cs" />\r
     <Compile Include="ReferenceSources\AssertWrapper.cs" />\r
+    <Compile Include="ReferenceSources\AutoWebProxyScriptEngine.cs" />\r
     <Compile Include="ReferenceSources\BinaryCompatibility.cs" />\r
     <Compile Include="ReferenceSources\CAPI.cs" />\r
     <Compile Include="ReferenceSources\ConfigurationManagerInternalFactory.cs" />\r
     <Compile Include="ReferenceSources\Internal.cs" />\r
     <Compile Include="ReferenceSources\Logging.cs" />\r
     <Compile Include="ReferenceSources\NativeMethods.cs" />\r
+    <Compile Include="ReferenceSources\RequestCacheProtocol.cs" />\r
     <Compile Include="ReferenceSources\SettingsSectionInternal.cs" />\r
     <Compile Include="ReferenceSources\Socket.cs" />\r
     <Compile Include="ReferenceSources\SR.cs" />\r
     <Compile Include="ReferenceSources\SSPIConfiguration.cs" />\r
     <Compile Include="ReferenceSources\SSPISafeHandles.cs" />\r
     <Compile Include="ReferenceSources\SSPIWrapper.cs" />\r
-    <Compile Include="ReferenceSources\SystemNetworkCredential.cs" />\r
     <Compile Include="ReferenceSources\Win32Exception.cs" />\r
     <Compile Include="System.CodeDom.Compiler\CodeCompiler.cs" />\r
     <Compile Include="System.CodeDom.Compiler\CodeDomConfigurationHandler.cs" />\r
     <Compile Include="System.Net\BindIPEndPoint.cs" />\r
     <Compile Include="System.Net\ChunkedInputStream.cs" />\r
     <Compile Include="System.Net\ChunkStream.cs" />\r
-    <Compile Include="System.Net\CredentialCache.cs" />\r
     <Compile Include="System.Net\DecompressionMethods.cs" />\r
     <Compile Include="System.Net\DefaultCertificatePolicy.cs" />\r
     <Compile Include="System.Net\DigestClient.cs" />\r
     <Compile Include="System.Net\FtpStatus.cs" />\r
     <Compile Include="System.Net\FtpWebRequest.cs" />\r
     <Compile Include="System.Net\FtpWebResponse.cs" />\r
-    <Compile Include="System.Net\GlobalProxySelection.cs" />\r
     <Compile Include="System.Net\HttpConnection.cs" />\r
     <Compile Include="System.Net\HttpListener.cs" />\r
     <Compile Include="System.Net\HttpListenerBasicIdentity.cs" />\r
     <Compile Include="System.Net\WebConnectionData.cs" />\r
     <Compile Include="System.Net\WebConnectionGroup.cs" />\r
     <Compile Include="System.Net\WebConnectionStream.cs" />\r
-    <Compile Include="System.Net\WebProxy.cs" />\r
-    <Compile Include="System.Net\WebRequest.cs" />\r
     <Compile Include="System.Runtime.InteropServices.ComTypes\ADVF.cs" />\r
     <Compile Include="System.Runtime.InteropServices.ComTypes\DATADIR.cs" />\r
     <Compile Include="System.Runtime.InteropServices.ComTypes\DVASPECT.cs" />\r
index ebfc1d0cc3ad7464e3eb20240169c99827487924..6f18eeb5f4e49575ff4647c78f997a09b05c3e0f 100644 (file)
@@ -28,7 +28,7 @@
     <DebugType>full</DebugType>\r
     <NoWarn>1699,618</NoWarn>\r
     <Optimize>false</Optimize>\r
-    <DefineConstants>TRACE;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;MONO_FEATURE_PROCESS_START;MONO_FEATURE_THREAD_ABORT;MONO_FEATURE_THREAD_SUSPEND_RESUME;SECURITY_DEP;XML_DEP;MONO_SECURITY_ALIAS</DefineConstants>\r
+    <DefineConstants>TRACE;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;MONO_FEATURE_PROCESS_START;MONO_FEATURE_THREAD_ABORT;MONO_FEATURE_THREAD_SUSPEND_RESUME;MONO_FEATURE_MULTIPLE_APPDOMAINS;SECURITY_DEP;XML_DEP;MONO_SECURITY_ALIAS</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -36,7 +36,7 @@
     <DebugType>pdbonly</DebugType>\r
     <NoWarn>1699,618</NoWarn>\r
     <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;MONO_FEATURE_PROCESS_START;MONO_FEATURE_THREAD_ABORT;MONO_FEATURE_THREAD_SUSPEND_RESUME;SECURITY_DEP;XML_DEP;MONO_SECURITY_ALIAS</DefineConstants>\r
+    <DefineConstants>NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;MONO_FEATURE_PROCESS_START;MONO_FEATURE_THREAD_ABORT;MONO_FEATURE_THREAD_SUSPEND_RESUME;MONO_FEATURE_MULTIPLE_APPDOMAINS;SECURITY_DEP;XML_DEP;MONO_SECURITY_ALIAS</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
     <Compile Include="..\referencesource\System\net\System\IriHelper.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\_BufferOffsetSize.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\_Connection.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\_emptywebproxy.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\_HeaderInfo.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\_HeaderInfoTable.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\_HTTPDateParse.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\_LazyAsyncResult.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\_LoggingObject.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\_NetRes.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\_ProxyChain.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\_ScatterGatherBuffers.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\_TimerThread.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\_WebProxyDataBuilder.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\AuthenticationScheme.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\AuthenticationSchemeSelector.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\Authorization.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\Cache\RequestCache.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\Cache\RequestCacheEntry.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\Cache\RequestCacheManager.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\Cache\RequestCachePolicy.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\Configuration\DefaultProxySection.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\cookie.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\cookiecollection.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\cookiecontainer.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\cookieexception.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\CredentialCache.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\DnsEndPoint.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\EndPoint.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\filewebrequest.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\filewebresponse.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\FtpStatusCode.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\GlobalProxySelection.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\HttpListenerException.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\HttpListenerRequestUriBuilder.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\HttpRequestHeader.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\IPEndPoint.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\IPHostEntry.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\iwebproxy.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\IWebProxyFinder.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\IWebRequestCreate.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\mail\Base64Stream.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\mail\Base64WriteStateInfo.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\WebExceptionStatus.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\WebHeaderCollection.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\WebPermission.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\webproxy.cs" />\r
+    <Compile Include="..\referencesource\System\net\System\Net\WebRequest.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\WebRequestMethods.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\WebResponse.cs" />\r
     <Compile Include="..\referencesource\System\net\System\Net\WebUtility.cs" />\r
     <Compile Include="ReferenceSources\_SslState.cs" />\r
     <Compile Include="ReferenceSources\_SslStream.cs" />\r
     <Compile Include="ReferenceSources\AssertWrapper.cs" />\r
+    <Compile Include="ReferenceSources\AutoWebProxyScriptEngine.cs" />\r
     <Compile Include="ReferenceSources\BinaryCompatibility.cs" />\r
     <Compile Include="ReferenceSources\CAPI.cs" />\r
     <Compile Include="ReferenceSources\ConfigurationManagerInternalFactory.cs" />\r
     <Compile Include="ReferenceSources\Internal.cs" />\r
     <Compile Include="ReferenceSources\Logging.cs" />\r
     <Compile Include="ReferenceSources\NativeMethods.cs" />\r
+    <Compile Include="ReferenceSources\RequestCacheProtocol.cs" />\r
     <Compile Include="ReferenceSources\SettingsSectionInternal.cs" />\r
     <Compile Include="ReferenceSources\Socket.cs" />\r
     <Compile Include="ReferenceSources\SR.cs" />\r
     <Compile Include="ReferenceSources\SSPIConfiguration.cs" />\r
     <Compile Include="ReferenceSources\SSPISafeHandles.cs" />\r
     <Compile Include="ReferenceSources\SSPIWrapper.cs" />\r
-    <Compile Include="ReferenceSources\SystemNetworkCredential.cs" />\r
     <Compile Include="ReferenceSources\Win32Exception.cs" />\r
     <Compile Include="System.CodeDom.Compiler\CodeCompiler.cs" />\r
     <Compile Include="System.CodeDom.Compiler\CodeDomConfigurationHandler.cs" />\r
     <Compile Include="System.Net\BindIPEndPoint.cs" />\r
     <Compile Include="System.Net\ChunkedInputStream.cs" />\r
     <Compile Include="System.Net\ChunkStream.cs" />\r
-    <Compile Include="System.Net\CredentialCache.cs" />\r
     <Compile Include="System.Net\DecompressionMethods.cs" />\r
     <Compile Include="System.Net\DefaultCertificatePolicy.cs" />\r
     <Compile Include="System.Net\DigestClient.cs" />\r
     <Compile Include="System.Net\FtpStatus.cs" />\r
     <Compile Include="System.Net\FtpWebRequest.cs" />\r
     <Compile Include="System.Net\FtpWebResponse.cs" />\r
-    <Compile Include="System.Net\GlobalProxySelection.cs" />\r
     <Compile Include="System.Net\HttpConnection.cs" />\r
     <Compile Include="System.Net\HttpListener.cs" />\r
     <Compile Include="System.Net\HttpListenerBasicIdentity.cs" />\r
     <Compile Include="System.Net\WebConnectionData.cs" />\r
     <Compile Include="System.Net\WebConnectionGroup.cs" />\r
     <Compile Include="System.Net\WebConnectionStream.cs" />\r
-    <Compile Include="System.Net\WebProxy.cs" />\r
-    <Compile Include="System.Net\WebRequest.cs" />\r
     <Compile Include="System.Runtime.InteropServices.ComTypes\ADVF.cs" />\r
     <Compile Include="System.Runtime.InteropServices.ComTypes\DATADIR.cs" />\r
     <Compile Include="System.Runtime.InteropServices.ComTypes\DVASPECT.cs" />\r
index 4413f8ae0f791e302a3d0722932ee24dd4019c9c..92b54f9ccdb4f42dd2102b9cba39fa0f54387372 100644 (file)
   -->\r
   <PropertyGroup>\r
     <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+$(ProjectDir)\..\..\jay\jay -ct &lt; $(ProjectDir)\..\..\jay\skeleton.cs $(ProjectDir)\Monodoc.Ecma\EcmaUrlParser.jay > $(ProjectDir)\Monodoc.Ecma\EcmaUrlParser.cs
+
 
     </PreBuildEvent>\r
     <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
+$(ProjectDir)\..\..\jay\jay -ct &lt; $(ProjectDir)\..\..\jay\skeleton.cs $(ProjectDir)\Monodoc.Ecma\EcmaUrlParser.jay > $(ProjectDir)\Monodoc.Ecma\EcmaUrlParser.cs\r
+\r
 \r
     </PreBuildEvent>\r
     <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
index bb3643e628c59f0dd487f109dd28294b2533aef7..cf8834c52c7388a4c1206e7cbc210442c2126415 100644 (file)
   -->\r
   <PropertyGroup>\r
     <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+$(ProjectDir)\..\jay\jay -ct &lt; $(ProjectDir)\..\jay\skeleton.cs $(ProjectDir)\parser\ILParser.jay > $(ProjectDir)\ILParser.cs
+
 
     </PreBuildEvent>\r
     <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
+$(ProjectDir)\..\jay\jay -ct &lt; $(ProjectDir)\..\jay\skeleton.cs $(ProjectDir)\parser\ILParser.jay > $(ProjectDir)\ILParser.cs
+
 \r
     </PreBuildEvent>\r
     <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
index 63d6367309d7150bc430e8da642c61072b66a955..127df271c794c073834a48f79eb922e6c569c6da 100644 (file)
@@ -4482,8 +4482,8 @@ namespace Mono.CSharp {
                                        //
                                        // Uwrap delegate from Expression<T>
                                        //
-                                       q = TypeManager.GetTypeArguments (q)[0];
-                                       p = TypeManager.GetTypeArguments (p)[0];
+                                       q = TypeManager.GetTypeArguments (q) [0];
+                                       p = TypeManager.GetTypeArguments (p) [0];
                                }
 
                                var p_m = Delegate.GetInvokeMethod (p);
@@ -4510,10 +4510,10 @@ namespace Mono.CSharp {
                                // if p has a return type Y, and q is void returning, then C1 is the better conversion.
                                //
                                if (q.Kind == MemberKind.Void) {
-                                       return p.Kind != MemberKind.Void ? 1: 0;
+                                       return p.Kind != MemberKind.Void ? 1 : 0;
                                }
 
-                               var am = (AnonymousMethodExpression) a.Expr;
+                               var am = (AnonymousMethodExpression)a.Expr;
 
                                //
                                // When anonymous method is an asynchronous, and P has a return type Task<Y1>, and Q has a return type Task<Y2>
@@ -4521,8 +4521,8 @@ namespace Mono.CSharp {
                                //
                                if (p.IsGenericTask || q.IsGenericTask) {
                                        if (am.Block.IsAsync && p.IsGenericTask && q.IsGenericTask) {
-                                               q = q.TypeArguments[0];
-                                               p = p.TypeArguments[0];
+                                               q = q.TypeArguments [0];
+                                               p = p.TypeArguments [0];
                                        }
                                }
 
@@ -4548,11 +4548,63 @@ namespace Mono.CSharp {
                        if (argument_type == q)
                                return 2;
 
-                       //
-                       // The parameters are identicial and return type is not void, use better type conversion
-                       // on return type to determine better one
-                       //
-                       return BetterTypeConversion (ec, p, q);
+                       return IsBetterConversionTarget (ec, p, q);
+               }
+
+               static int IsBetterConversionTarget (ResolveContext rc, TypeSpec p, TypeSpec q)
+               {
+                       if ((p.Kind == MemberKind.Delegate || p.IsExpressionTreeType) && (q.Kind == MemberKind.Delegate || q.IsExpressionTreeType)) {
+
+                               if (p.Kind != MemberKind.Delegate) {
+                                       p = TypeManager.GetTypeArguments (p) [0];
+                               }
+
+                               if (q.Kind != MemberKind.Delegate) {
+                                       q = TypeManager.GetTypeArguments (q) [0];
+                               }
+
+                               var p_m = Delegate.GetInvokeMethod (p);
+                               var q_m = Delegate.GetInvokeMethod (q);
+
+                               p = p_m.ReturnType;
+                               q = q_m.ReturnType;
+
+                               //
+                               // if p is void returning, and q has a return type Y, then C2 is the better conversion.
+                               //
+                               if (p.Kind == MemberKind.Void) {
+                                       return q.Kind != MemberKind.Void ? 2 : 0;
+                               }
+
+                               //
+                               // if p has a return type Y, and q is void returning, then C1 is the better conversion.
+                               //
+                               if (q.Kind == MemberKind.Void) {
+                                       return p.Kind != MemberKind.Void ? 1 : 0;
+                               }
+
+                               return IsBetterConversionTarget (rc, p, q);
+                       }
+
+                       if (p.IsGenericTask && q.IsGenericTask) {
+                               q = q.TypeArguments [0];
+                               p = p.TypeArguments [0];
+                               return IsBetterConversionTarget (rc, p, q);
+                       }
+
+                       if (p.IsNullableType) {
+                               p = Nullable.NullableInfo.GetUnderlyingType (p);
+                               if (!BuiltinTypeSpec.IsPrimitiveType (p))
+                                       return 0;
+                       }
+
+                       if (q.IsNullableType) {
+                               q = Nullable.NullableInfo.GetUnderlyingType (q);
+                               if (!BuiltinTypeSpec.IsPrimitiveType (q))
+                                       return 0;
+                       }
+
+                       return BetterTypeConversion (rc, p, q);
                }
 
                //
@@ -4625,8 +4677,6 @@ namespace Mono.CSharp {
                                return 1;
                        }
 
-                       // FIXME: handle lifted operators
-
                        // TODO: this is expensive
                        Expression p_tmp = new EmptyExpression (p);
                        Expression q_tmp = new EmptyExpression (q);
index e36e17bc2d089ba95f507452f1eb4476e42fba06..46bedb4861240da0ed221219b55b8388781c1602 100644 (file)
   -->\r
   <PropertyGroup>\r
     <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-$(ProjectDir)\..\jay\jay -ct &lt; $(ProjectDir)\..\jay\skeleton.cs $(ProjectDir)\cs-parser.jay > $(ProjectDir)\cs-parser.cs\r
+$(ProjectDir)\..\jay\jay -ct &lt; $(ProjectDir)\..\jay\skeleton.cs $(ProjectDir)\cs-parser.jay > $(ProjectDir)\cs-parser.cs
+
 
     </PreBuildEvent>\r
     <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-$(ProjectDir)\..\jay\jay.exe -ct &lt; $(ProjectDir)\..\jay\skeleton.cs $(ProjectDir)\cs-parser.jay > $(ProjectDir)\cs-parser.cs\r
+$(ProjectDir)\..\jay\jay -ct &lt; $(ProjectDir)\..\jay\skeleton.cs $(ProjectDir)\cs-parser.jay > $(ProjectDir)\cs-parser.cs\r
+\r
 \r
     </PreBuildEvent>\r
     <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
diff --git a/mcs/tests/test-935.cs b/mcs/tests/test-935.cs
new file mode 100644 (file)
index 0000000..c47d89d
--- /dev/null
@@ -0,0 +1,74 @@
+using System;
+using System.Threading.Tasks;
+using System.Linq.Expressions;
+
+public static class Program
+{
+       public delegate void DelegateVoid (int arg);
+       public delegate int DelegateInt (string arg);
+
+       public static int Main () 
+       { 
+               Foo (Bar);
+
+               TT (null);
+               NN (0);
+               NN2 (1);
+               Complex (null);
+               return 0;
+       }
+
+       static void TT (Task<string> a)
+       {
+       }
+
+       static void TT (Task<object> b)
+       {
+               throw new ApplicationException ("wrong overload");
+       }
+
+       static void NN (sbyte a)
+       {
+       }
+
+       static void NN (uint? b)
+       {
+               throw new ApplicationException ("wrong overload");
+       }
+
+       static void NN2 (sbyte? a)
+       {
+       }
+
+       static void NN2 (uint? b)
+       {
+               throw new ApplicationException ("wrong overload");
+       }
+
+       public static void Bar (int arg) 
+       {
+       }
+
+       public static int Bar (string arg)
+       { 
+               return  2;
+       }
+
+       public static void Foo (DelegateVoid input)
+       {
+               throw new ApplicationException ("wrong overload");
+       }
+
+       public static void Foo (DelegateInt input)
+       {
+       }
+
+       static void Complex (Expression<Func<Task<short>>> arg)
+       {
+       }
+
+       static void Complex (Expression<Func<Task<ulong>>> arg)
+       {
+               throw new ApplicationException ("wrong overload");
+       }
+}
\ No newline at end of file
index 7ba3329b35d0b6ec07745f7a19c895346b2b589b..f49ba8fbf1197df783b10d1dc6e8885bc8c428f7 100644 (file)
       </method>
     </type>
   </test>
+  <test name="test-935.cs">
+    <type name="Program">
+      <method name="Int32 Main()" attrs="150">
+        <size>73</size>
+      </method>
+      <method name="Void TT(System.Threading.Tasks.Task`1[System.String])" attrs="145">
+        <size>2</size>
+      </method>
+      <method name="Void TT(System.Threading.Tasks.Task`1[System.Object])" attrs="145">
+        <size>12</size>
+      </method>
+      <method name="Void NN(SByte)" attrs="145">
+        <size>2</size>
+      </method>
+      <method name="Void NN(System.Nullable`1[System.UInt32])" attrs="145">
+        <size>12</size>
+      </method>
+      <method name="Void NN2(System.Nullable`1[System.SByte])" attrs="145">
+        <size>2</size>
+      </method>
+      <method name="Void NN2(System.Nullable`1[System.UInt32])" attrs="145">
+        <size>12</size>
+      </method>
+      <method name="Void Bar(Int32)" attrs="150">
+        <size>2</size>
+      </method>
+      <method name="Int32 Bar(System.String)" attrs="150">
+        <size>10</size>
+      </method>
+      <method name="Void Foo(DelegateVoid)" attrs="150">
+        <size>12</size>
+      </method>
+      <method name="Void Foo(DelegateInt)" attrs="150">
+        <size>2</size>
+      </method>
+      <method name="Void Complex(System.Linq.Expressions.Expression`1[System.Func`1[System.Threading.Tasks.Task`1[System.Int16]]])" attrs="145">
+        <size>2</size>
+      </method>
+      <method name="Void Complex(System.Linq.Expressions.Expression`1[System.Func`1[System.Threading.Tasks.Task`1[System.UInt64]]])" attrs="145">
+        <size>12</size>
+      </method>
+    </type>
+    <type name="Program+DelegateVoid">
+      <method name="Void Invoke(Int32)" attrs="454">
+        <size>0</size>
+      </method>
+      <method name="System.IAsyncResult BeginInvoke(Int32, System.AsyncCallback, System.Object)" attrs="454">
+        <size>0</size>
+      </method>
+      <method name="Void EndInvoke(System.IAsyncResult)" attrs="454">
+        <size>0</size>
+      </method>
+      <method name="Void .ctor(Object, IntPtr)" attrs="6278">
+        <size>0</size>
+      </method>
+    </type>
+    <type name="Program+DelegateInt">
+      <method name="Int32 Invoke(System.String)" attrs="454">
+        <size>0</size>
+      </method>
+      <method name="System.IAsyncResult BeginInvoke(System.String, System.AsyncCallback, System.Object)" attrs="454">
+        <size>0</size>
+      </method>
+      <method name="Int32 EndInvoke(System.IAsyncResult)" attrs="454">
+        <size>0</size>
+      </method>
+      <method name="Void .ctor(Object, IntPtr)" attrs="6278">
+        <size>0</size>
+      </method>
+    </type>
+  </test>
   <test name="test-94.cs">
     <type name="Base">
       <method name="Int32 IVehicle.Start()" attrs="481">
index 92fc95c91f12e5a9cb6264dbda65c233aba2ab30..48b315986db977ce8296989159c35500806bc031 100644 (file)
@@ -6,17 +6,12 @@ LOCAL_MCS_FLAGS =
 LIB_REFS = System.Xml System
 PROGRAM = mconfig.exe
 
-BUILT_SOURCES=Mono.MonoConfig/consts.cs
-
-Mono.MonoConfig/consts.cs: Mono.MonoConfig/consts.cs.in
-       sed -e "s;@MONO_SYSCONFDIR@;$(sysconfdir);g" < $< > $@
-
 install-local: install-local-data
 
 install-local-data:
        $(MKINSTALLDIRS) $(DESTDIR)$(sysconfdir)/mono/mconfig/
        $(INSTALL_DATA) data/config.xml $(DESTDIR)$(sysconfdir)/mono/mconfig
 
-EXTRA_DISTFILES = TODO data/config.xml Mono.MonoConfig/consts.cs.in
+EXTRA_DISTFILES = TODO data/config.xml 
 
 include ../../build/executable.make
diff --git a/mcs/tools/mconfig/Mono.MonoConfig/consts.cs.in b/mcs/tools/mconfig/Mono.MonoConfig/consts.cs.in
deleted file mode 100644 (file)
index 8b7cbbe..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-//
-// Authors:
-//   Marek Habersack (mhabersack@novell.com)
-//
-// (C) 2007 Novell, Inc
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.IO;
-
-namespace Mono.MonoConfig
-{
-       public class Constants
-       {
-               public static readonly string GlobalConfigPath;
-
-               static Constants ()
-               {
-                       GlobalConfigPath = String.Format ("@MONO_SYSCONFDIR@{0}mono{0}mconfig{0}config.xml",
-                                                         Path.DirectorySeparatorChar);
-               }
-       }
-}
index fe3428355ae091f27df07fb1a0b24cb74d35ec41..b7d609413570369bb804b5d8fa7a9a1dde28f182 100644 (file)
@@ -67,8 +67,7 @@
     <Compile Include="Mono.MonoConfig\IDocumentNodeHandler.cs" />\r
     <Compile Include="Mono.MonoConfig\IFeatureGenerator.cs" />\r
     <Compile Include="Mono.MonoConfig\IStorageConsumer.cs" />\r
-    <Compile Include="Mono.MonoConfig\Section.cs" />\r
-    <Compile Include="Mono.MonoConfig\consts.cs" />\r  </ItemGroup>\r
+    <Compile Include="Mono.MonoConfig\Section.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
index 5887f739dbbfb43b1102445f635a313867e17be3..7fc9f0bc97b62be945c9724e047fbd6a871b3248 100644 (file)
@@ -270,7 +270,7 @@ namespace Mono.MonoConfig
        class MConfig
        {
                static string[] configPaths = {
-                       Constants.GlobalConfigPath,
+                       Path.GetFullPath (Path.Combine (Environment.CommandLine, "..", "..", "..","..", "etc", "mono", "mconfig", "config.xml")),
                        Path.Combine (ConfigPath, "config.xml"),
                        Path.Combine (".", "mconfig.xml"),
                        null
index efb76cbf9e0dea90c21deeae424c932d5d57c504..c319f54ecfcd67efb50bdd224b2bcdbfbb9df41c 100644 (file)
@@ -183,12 +183,12 @@ check-monodocer-dropns-multi: $(PROGRAM)
        $(MAKE) Test/DocTest-DropNS-unified-multitest.dll
 
        # mdoc update for both classic and unified
-       $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual $(MULTI-CLASSIC) --api-style=classic -multiassembly
-       $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual $(MULTI-UNIFIED) --api-style=unified --dropns Test/DocTest-DropNS-unified.dll=MyFramework --dropns Test/DocTest-DropNS-unified-multitest.dll=MyFramework -multiassembly
+       $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual $(MULTI-CLASSIC) --api-style=classic 
+       $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual $(MULTI-UNIFIED) --api-style=unified --dropns Test/DocTest-DropNS-unified.dll=MyFramework --dropns Test/DocTest-DropNS-unified-multitest.dll=MyFramework 
        
        # now run it again to verify idempotency
-       $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual $(MULTI-CLASSIC) --api-style=classic -multiassembly
-       $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual $(MULTI-UNIFIED) --api-style=unified --dropns Test/DocTest-DropNS-unified.dll=MyFramework --dropns Test/DocTest-DropNS-unified-multitest.dll=MyFramework -multiassembly
+       $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual $(MULTI-CLASSIC) --api-style=classic 
+       $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual $(MULTI-UNIFIED) --api-style=unified --dropns Test/DocTest-DropNS-unified.dll=MyFramework --dropns Test/DocTest-DropNS-unified-multitest.dll=MyFramework 
        
        diff --exclude=.svn -rup Test/en.expected-dropns-multi Test/en.actual
 
@@ -205,8 +205,8 @@ check-monodocer-dropns-multi-withexisting: $(PROGRAM)
        $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual Test/DocTest-DropNS-unified.dll --api-style=unified --dropns Test/DocTest-DropNS-unified.dll=MyFramework 
        
        # mdoc update for both classic and unified
-       $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual $(MULTI-CLASSIC) --api-style=classic -multiassembly
-       $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual $(MULTI-UNIFIED) --api-style=unified --dropns Test/DocTest-DropNS-unified.dll=MyFramework --dropns Test/DocTest-DropNS-unified-multitest.dll=MyFramework -multiassembly
+       $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual $(MULTI-CLASSIC) --api-style=classic 
+       $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual $(MULTI-UNIFIED) --api-style=unified --dropns Test/DocTest-DropNS-unified.dll=MyFramework --dropns Test/DocTest-DropNS-unified-multitest.dll=MyFramework 
        
        diff --exclude=.svn -rup Test/en.expected-dropns-multi-withexisting Test/en.actual
 
index a8f1ccc50290aeeeb70422e0aec4a93274f6528b..dc94c3a50b827a931eeae57f6e891f0428fef047 100644 (file)
@@ -135,7 +135,7 @@ class MDocUpdater : MDocCommand
        
        string apistyle = string.Empty;
        bool isClassicRun;
-       bool multiassembly;
+       
        bool delete;
        bool show_exceptions;
        bool no_assembly_versions, ignore_missing_types;
@@ -194,7 +194,14 @@ class MDocUpdater : MDocCommand
        {
                return !string.IsNullOrWhiteSpace (droppedNamespace);
        }
-
+       
+       /// <summary>Logic flag to signify that we should list assemblies at the method level, since there are multiple
+       /// assemblies for a given type/method.</summary>
+       public bool IsMultiAssembly {
+               get { 
+                       return apistyle == "classic" || apistyle == "unified";
+               }
+       }
        
        static List<string> droppedAssemblies = new List<string>();
 
@@ -281,12 +288,9 @@ class MDocUpdater : MDocCommand
                        { "preserve",
                                "Do not delete members that don't exist in the assembly, but rather mark them as preserved.",
                                v => PreserveTag = "true" },
-                       { "multiassembly",
-                               "Allow types to be in multiple assemblies.",
-                               v => multiassembly = true },
                        { "api-style=",
                                "Denotes the apistyle. Currently, only `classic` and `unified` are supported. `classic` set of assemblies should be run first, immediately followed by 'unified' assemblies with the `dropns` parameter.",
-                               v => apistyle = v.ToLowerInvariant ()},
+                               v => { apistyle = v.ToLowerInvariant (); }},
                };
                var assemblies = Parse (p, args, "update", 
                                "[OPTIONS]+ ASSEMBLIES",
@@ -787,7 +791,7 @@ class MDocUpdater : MDocCommand
        private void AddIndexAssembly (AssemblyDefinition assembly, XmlElement parent)
        {
                XmlElement index_assembly = null;
-               if (multiassembly) 
+               if (IsMultiAssembly) 
                        index_assembly = (XmlElement)parent.SelectSingleNode ("Assembly[@Name='"+ assembly.Name.Name +"']");
                
                if (index_assembly == null) 
@@ -867,7 +871,7 @@ class MDocUpdater : MDocCommand
                
                XmlElement index_types = WriteElement(index.DocumentElement, "Types");
                XmlElement index_assemblies = WriteElement(index.DocumentElement, "Assemblies");
-               if (!multiassembly) 
+               if (!IsMultiAssembly) 
                        index_assemblies.RemoveAll ();
 
 
@@ -1765,7 +1769,7 @@ class MDocUpdater : MDocCommand
                WriteElementText(me, "MemberType", GetMemberType(mi));
 
                if (!no_assembly_versions) {
-                       if (!multiassembly)
+                       if (!IsMultiAssembly)
                                UpdateAssemblyVersions (me, mi, true);
                        else {
                                var node = AddAssemblyNameToNode (me, mi.Module);
@@ -2013,7 +2017,10 @@ class MDocUpdater : MDocCommand
                member.AppendChild (link);
                AddTargets (em, info);
 
-               extensionMethods.Add (em);
+               var sig = em.SelectSingleNode ("Member/MemberSignature[@Language='C#']/@Value");
+               if (!IsMultiAssembly || (IsMultiAssembly && sig != null && !extensionMethods.Any (ex => ex.SelectSingleNode ("Member/MemberSignature[@Language='C#']/@Value").Value == sig.Value))) {
+                       extensionMethods.Add (em);
+               }
        }
 
        private static void RemoveExcept (XmlNode node, string[] except)
@@ -2404,7 +2411,7 @@ class MDocUpdater : MDocCommand
        
        private bool UpdateAssemblyVersions(XmlElement root, AssemblyDefinition assembly, string[] assemblyVersions, bool add)
        {
-               if (multiassembly)
+               if (IsMultiAssembly)
                        return false;
                        
                XmlElement av = (XmlElement) root.SelectSingleNode ("AssemblyVersions");
index 303c58e8882b0a65ea59086460b6763f8e6ede12..b9cbce549bf5c6f2c2d614cea5c67465bbba1022 100644 (file)
@@ -21,6 +21,9 @@ namespace MyFramework.MyNamespace {
                public string WillDeleteInV2Classic {get;set;}
                #endif
        }
+       public static class MyClassExtensions {
+               public static bool AnExtension (this MyClass value) { return false; }
+       }
 
        #if DELETETEST 
        public class TypeOnlyInClassic {}
index b4fcc9ea01b867f443912233f6fffcf06d8e53b1..a11dcb9c2c870c8b3c73c2bf2e195a6065100b37 100644 (file)
@@ -22,6 +22,9 @@ namespace MyNamespace {
                #endif
        }
 
+       public static class MyClassExtensions {
+               public static bool AnExtension (this MyClass value) { return false; }
+       }
        #if DELETETEST
        public struct nint {
 
index 77388be8815e6d2dd07ddcf53b72fdc006852272..317b6a61848439d00608f98cb1a02be2166c40c7 100644 (file)
       <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <Parameters />
       <MemberSignature Language="ILAsm" Value=".method public hidebysig instance float32 Hello(int32 value) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
       <MemberSignature Language="ILAsm" Value=".property instance string MyProperty" />
       <MemberType>Property</MemberType>
       <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
@@ -81,6 +87,7 @@
       <MemberSignature Language="ILAsm" Value=".property instance float64 OnlyInClassic" />
       <MemberType>Property</MemberType>
       <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
       <MemberSignature Language="ILAsm" Value=".property instance char OnlyInUnified" />
       <MemberType>Property</MemberType>
       <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
diff --git a/mcs/tools/mdoc/Test/en.expected-dropns-classic-v1/MyFramework.MyNamespace/MyClassExtensions.xml b/mcs/tools/mdoc/Test/en.expected-dropns-classic-v1/MyFramework.MyNamespace/MyClassExtensions.xml
new file mode 100644 (file)
index 0000000..a11fafe
--- /dev/null
@@ -0,0 +1,47 @@
+<Type Name="MyClassExtensions" FullName="MyFramework.MyNamespace.MyClassExtensions">
+  <TypeSignature Language="C#" Value="public static class MyClassExtensions" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit MyClassExtensions extends System.Object" />
+  <AssemblyInfo apistyle="classic">
+    <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <AssemblyInfo apistyle="unified">
+    <AssemblyName>DocTest-DropNS-unified</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.Object</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Members>
+    <Member MemberName="AnExtension">
+      <MemberSignature Language="C#" Value="public static bool AnExtension (this MyFramework.MyNamespace.MyClass value);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool AnExtension(class MyFramework.MyNamespace.MyClass value) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="value" Type="MyFramework.MyNamespace.MyClass" RefType="this" />
+      </Parameters>
+      <Docs>
+        <param name="value">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
index edacc723f54ac08993c55589023916a935d329c6..330a3895e2d6f820093a061b0a24f8bf32323fb5 100644 (file)
@@ -1,5 +1,15 @@
 <Overview>
   <Assemblies>
+    <Assembly Name="DocTest-DropNS-classic" Version="0.0.0.0">
+      <Attributes>
+        <Attribute>
+          <AttributeName>System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute+DebuggingModes.IgnoreSymbolStoreSequencePoints)</AttributeName>
+        </Attribute>
+        <Attribute>
+          <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName>
+        </Attribute>
+      </Attributes>
+    </Assembly>
     <Assembly Name="DocTest-DropNS-unified" Version="0.0.0.0">
       <Attributes>
         <Attribute>
   <Types>
     <Namespace Name="MyFramework.MyNamespace">
       <Type Name="MyClass" Kind="Class" />
+      <Type Name="MyClassExtensions" Kind="Class" />
     </Namespace>
   </Types>
   <Title>DocTest-DropNS-classic</Title>
+  <ExtensionMethods>
+    <ExtensionMethod>
+      <Targets>
+        <Target Type="T:MyFramework.MyNamespace.MyClass" />
+      </Targets>
+      <Member MemberName="AnExtension">
+        <MemberSignature Language="C#" Value="public static bool AnExtension (this MyFramework.MyNamespace.MyClass value);" />
+        <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool AnExtension(class MyFramework.MyNamespace.MyClass value) cil managed" />
+        <MemberType>ExtensionMethod</MemberType>
+        <ReturnValue>
+          <ReturnType>System.Boolean</ReturnType>
+        </ReturnValue>
+        <Parameters>
+          <Parameter Name="value" Type="MyFramework.MyNamespace.MyClass" RefType="this" />
+        </Parameters>
+        <Docs>
+          <param name="value">To be added.</param>
+          <summary>To be added.</summary>
+        </Docs>
+        <Link Type="MyFramework.MyNamespace.MyClassExtensions" Member="M:MyFramework.MyNamespace.MyClassExtensions.AnExtension(MyFramework.MyNamespace.MyClass)" />
+      </Member>
+    </ExtensionMethod>
+  </ExtensionMethods>
 </Overview>
index 77388be8815e6d2dd07ddcf53b72fdc006852272..317b6a61848439d00608f98cb1a02be2166c40c7 100644 (file)
       <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <Parameters />
       <MemberSignature Language="ILAsm" Value=".method public hidebysig instance float32 Hello(int32 value) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
       <MemberSignature Language="ILAsm" Value=".property instance string MyProperty" />
       <MemberType>Property</MemberType>
       <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
@@ -81,6 +87,7 @@
       <MemberSignature Language="ILAsm" Value=".property instance float64 OnlyInClassic" />
       <MemberType>Property</MemberType>
       <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
       <MemberSignature Language="ILAsm" Value=".property instance char OnlyInUnified" />
       <MemberType>Property</MemberType>
       <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
diff --git a/mcs/tools/mdoc/Test/en.expected-dropns-classic-withsecondary/MyFramework.MyNamespace/MyClassExtensions.xml b/mcs/tools/mdoc/Test/en.expected-dropns-classic-withsecondary/MyFramework.MyNamespace/MyClassExtensions.xml
new file mode 100644 (file)
index 0000000..a11fafe
--- /dev/null
@@ -0,0 +1,47 @@
+<Type Name="MyClassExtensions" FullName="MyFramework.MyNamespace.MyClassExtensions">
+  <TypeSignature Language="C#" Value="public static class MyClassExtensions" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit MyClassExtensions extends System.Object" />
+  <AssemblyInfo apistyle="classic">
+    <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <AssemblyInfo apistyle="unified">
+    <AssemblyName>DocTest-DropNS-unified</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.Object</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Members>
+    <Member MemberName="AnExtension">
+      <MemberSignature Language="C#" Value="public static bool AnExtension (this MyFramework.MyNamespace.MyClass value);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool AnExtension(class MyFramework.MyNamespace.MyClass value) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="value" Type="MyFramework.MyNamespace.MyClass" RefType="this" />
+      </Parameters>
+      <Docs>
+        <param name="value">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
index a920ce2f499be95356c1c871a34f1ad37f34f4ce..0e02038a020f0effe409983a68c7745ef17c4236 100644 (file)
     <remarks>To be added.</remarks>
   </Docs>
   <Members>
-    <Member MemberName=".ctor">
+    <Member MemberName=".ctor" apistyle="classic">
       <MemberSignature Language="C#" Value="public MyOtherClass ();" />
       <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
+      <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic-secondary</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <Parameters />
         <remarks>To be added.</remarks>
       </Docs>
     </Member>
-    <Member MemberName="Hello">
+    <Member MemberName="Hello" apistyle="classic">
       <MemberSignature Language="C#" Value="public float Hello (int value);" />
       <MemberSignature Language="ILAsm" Value=".method public hidebysig instance float32 Hello(int32 value) cil managed" />
       <MemberType>Method</MemberType>
-      <AssemblyInfo>
+      <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic-secondary</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <remarks>To be added.</remarks>
       </Docs>
     </Member>
-    <Member MemberName="MyProperty">
+    <Member MemberName="MyProperty" apistyle="classic">
       <MemberSignature Language="C#" Value="public string MyProperty { get; set; }" />
       <MemberSignature Language="ILAsm" Value=".property instance string MyProperty" />
       <MemberType>Property</MemberType>
-      <AssemblyInfo>
+      <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic-secondary</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
index d0fb593627f3766e62c6fd348e6b96841a4b892d..3620aa8d0aa62ee29fff4c171fa457b5bdd67289 100644 (file)
@@ -1,5 +1,15 @@
 <Overview>
   <Assemblies>
+    <Assembly Name="DocTest-DropNS-classic" Version="0.0.0.0">
+      <Attributes>
+        <Attribute>
+          <AttributeName>System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute+DebuggingModes.IgnoreSymbolStoreSequencePoints)</AttributeName>
+        </Attribute>
+        <Attribute>
+          <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName>
+        </Attribute>
+      </Attributes>
+    </Assembly>
     <Assembly Name="DocTest-DropNS-unified" Version="0.0.0.0">
       <Attributes>
         <Attribute>
   <Types>
     <Namespace Name="MyFramework.MyNamespace">
       <Type Name="MyClass" Kind="Class" />
+      <Type Name="MyClassExtensions" Kind="Class" />
     </Namespace>
     <Namespace Name="MyFramework.MyOtherNamespace">
       <Type Name="MyOtherClass" Kind="Class" />
     </Namespace>
   </Types>
   <Title>Untitled</Title>
+  <ExtensionMethods>
+    <ExtensionMethod>
+      <Targets>
+        <Target Type="T:MyFramework.MyNamespace.MyClass" />
+      </Targets>
+      <Member MemberName="AnExtension">
+        <MemberSignature Language="C#" Value="public static bool AnExtension (this MyFramework.MyNamespace.MyClass value);" />
+        <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool AnExtension(class MyFramework.MyNamespace.MyClass value) cil managed" />
+        <MemberType>ExtensionMethod</MemberType>
+        <ReturnValue>
+          <ReturnType>System.Boolean</ReturnType>
+        </ReturnValue>
+        <Parameters>
+          <Parameter Name="value" Type="MyFramework.MyNamespace.MyClass" RefType="this" />
+        </Parameters>
+        <Docs>
+          <param name="value">To be added.</param>
+          <summary>To be added.</summary>
+        </Docs>
+        <Link Type="MyFramework.MyNamespace.MyClassExtensions" Member="M:MyFramework.MyNamespace.MyClassExtensions.AnExtension(MyFramework.MyNamespace.MyClass)" />
+      </Member>
+    </ExtensionMethod>
+  </ExtensionMethods>
 </Overview>
index 1ff3447bab2cbf2ea7bed3a8c06f5337bffa4352..13e6364a07b37b639c9c073dd7eac088da3594c4 100644 (file)
       <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic-deletetest</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified-deletetest</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <Parameters />
       <MemberSignature Language="ILAsm" Value=".property instance string AddedInV2" />
       <MemberType>Property</MemberType>
       <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic-deletetest</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified-deletetest</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
@@ -58,6 +62,7 @@
       <MemberSignature Language="ILAsm" Value=".property instance string AddedInV2Classic" />
       <MemberType>Property</MemberType>
       <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic-deletetest</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
@@ -74,6 +79,7 @@
       <MemberSignature Language="ILAsm" Value=".property instance string AddedInV2Unified" />
       <MemberType>Property</MemberType>
       <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified-deletetest</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
       <MemberSignature Language="ILAsm" Value=".method public hidebysig instance float32 Hello(int32 value) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic-deletetest</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified-deletetest</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
       <MemberSignature Language="ILAsm" Value=".property instance string InBoth" />
       <MemberType>Property</MemberType>
       <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic-deletetest</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified-deletetest</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
       <MemberSignature Language="ILAsm" Value=".property instance string InBothClassic" />
       <MemberType>Property</MemberType>
       <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic-deletetest</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
       <MemberSignature Language="ILAsm" Value=".property instance valuetype MyFramework.MyNamespace.nint InBothMagicType" apistyle="unified" />
       <MemberType>Property</MemberType>
       <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic-deletetest</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified-deletetest</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
       <MemberSignature Language="ILAsm" Value=".property instance string InBothUnified" />
       <MemberType>Property</MemberType>
       <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified-deletetest</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
       <MemberSignature Language="ILAsm" Value=".property instance string MyProperty" />
       <MemberType>Property</MemberType>
       <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic-deletetest</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified-deletetest</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
       <MemberSignature Language="ILAsm" Value=".property instance float64 OnlyInClassic" />
       <MemberType>Property</MemberType>
       <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic-deletetest</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
       <MemberSignature Language="ILAsm" Value=".property instance char OnlyInUnified" />
       <MemberType>Property</MemberType>
       <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified-deletetest</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
diff --git a/mcs/tools/mdoc/Test/en.expected-dropns-delete/MyFramework.MyNamespace/MyClassExtensions.xml b/mcs/tools/mdoc/Test/en.expected-dropns-delete/MyFramework.MyNamespace/MyClassExtensions.xml
new file mode 100644 (file)
index 0000000..3edb15b
--- /dev/null
@@ -0,0 +1,47 @@
+<Type Name="MyClassExtensions" FullName="MyFramework.MyNamespace.MyClassExtensions">
+  <TypeSignature Language="C#" Value="public static class MyClassExtensions" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit MyClassExtensions extends System.Object" />
+  <AssemblyInfo apistyle="classic">
+    <AssemblyName>DocTest-DropNS-classic-deletetest</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <AssemblyInfo apistyle="unified">
+    <AssemblyName>DocTest-DropNS-unified-deletetest</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.Object</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Members>
+    <Member MemberName="AnExtension">
+      <MemberSignature Language="C#" Value="public static bool AnExtension (this MyFramework.MyNamespace.MyClass value);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool AnExtension(class MyFramework.MyNamespace.MyClass value) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic-deletetest</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified-deletetest</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="value" Type="MyFramework.MyNamespace.MyClass" RefType="this" />
+      </Parameters>
+      <Docs>
+        <param name="value">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
index 7e6adf24eb3cabbef8a1b7267c9d36e811c6147e..442a2d7c543c3c068fbf6ee29852c6975e0c668e 100644 (file)
     <remarks>To be added.</remarks>
   </Docs>
   <Members>
-    <Member MemberName=".ctor">
+    <Member MemberName=".ctor" apistyle="classic">
       <MemberSignature Language="C#" Value="public TypeOnlyInClassic ();" />
       <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
+      <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic-deletetest</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <Parameters />
index ac5394fb6d1a2335bb5aba753001a5ba8b08c94a..07c03dcff7698b5fa71ecbf634f2603e513aacc4 100644 (file)
@@ -1,6 +1,10 @@
 <Type Name="WillDelete" FullName="MyFramework.MyNamespace.WillDelete">
   <TypeSignature Language="C#" Value="public class WillDelete" />
   <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit WillDelete extends System.Object" />
+  <AssemblyInfo apistyle="unified">
+    <AssemblyName>DocTest-DropNS-unified-deletetest</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
   <Base>
     <BaseTypeName>System.Object</BaseTypeName>
   </Base>
@@ -15,6 +19,7 @@
       <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified-deletetest</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <Parameters />
@@ -28,6 +33,7 @@
       <MemberSignature Language="ILAsm" Value=".property instance string Name" />
       <MemberType>Property</MemberType>
       <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified-deletetest</AssemblyName>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
index 0988450d779f6a8d4525b843aa6582e611a9c05a..02836fe971389cfac70a04298c3a339d704f6d1b 100644 (file)
@@ -1,5 +1,15 @@
 <Overview>
   <Assemblies>
+    <Assembly Name="DocTest-DropNS-classic-deletetest" Version="0.0.0.0">
+      <Attributes>
+        <Attribute>
+          <AttributeName>System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute+DebuggingModes.IgnoreSymbolStoreSequencePoints)</AttributeName>
+        </Attribute>
+        <Attribute>
+          <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName>
+        </Attribute>
+      </Attributes>
+    </Assembly>
     <Assembly Name="DocTest-DropNS-unified-deletetest" Version="0.0.0.0">
       <Attributes>
         <Attribute>
   <Types>
     <Namespace Name="MyFramework.MyNamespace">
       <Type Name="MyClass" Kind="Class" />
+      <Type Name="MyClassExtensions" Kind="Class" />
       <Type Name="nint" Kind="Structure" />
     </Namespace>
   </Types>
   <Title>DocTest-DropNS-classic-deletetest</Title>
+  <ExtensionMethods>
+    <ExtensionMethod>
+      <Targets>
+        <Target Type="T:MyFramework.MyNamespace.MyClass" />
+      </Targets>
+      <Member MemberName="AnExtension">
+        <MemberSignature Language="C#" Value="public static bool AnExtension (this MyFramework.MyNamespace.MyClass value);" />
+        <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool AnExtension(class MyFramework.MyNamespace.MyClass value) cil managed" />
+        <MemberType>ExtensionMethod</MemberType>
+        <ReturnValue>
+          <ReturnType>System.Boolean</ReturnType>
+        </ReturnValue>
+        <Parameters>
+          <Parameter Name="value" Type="MyFramework.MyNamespace.MyClass" RefType="this" />
+        </Parameters>
+        <Docs>
+          <param name="value">To be added.</param>
+          <summary>To be added.</summary>
+        </Docs>
+        <Link Type="MyFramework.MyNamespace.MyClassExtensions" Member="M:MyFramework.MyNamespace.MyClassExtensions.AnExtension(MyFramework.MyNamespace.MyClass)" />
+      </Member>
+    </ExtensionMethod>
+  </ExtensionMethods>
 </Overview>
index e73f7d55ff31f2a434f8c8296f6ae479c3237a7e..a88b428a94eb9e51ac7924e677e6caa81369ea9c 100644 (file)
       <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo apistyle="classic">
-        <AssemblyVersion>0.0.0.0</AssemblyVersion>
         <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <AssemblyInfo apistyle="unified">
-        <AssemblyVersion>0.0.0.0</AssemblyVersion>
         <AssemblyName>DocTest-DropNS-unified</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <AssemblyInfo apistyle="classic">
         <AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName>
       <MemberSignature Language="ILAsm" Value=".method public hidebysig instance float32 Hello(int32 value) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo apistyle="classic">
-        <AssemblyVersion>0.0.0.0</AssemblyVersion>
         <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <AssemblyInfo apistyle="unified">
-        <AssemblyVersion>0.0.0.0</AssemblyVersion>
         <AssemblyName>DocTest-DropNS-unified</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <AssemblyInfo apistyle="classic">
         <AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName>
       <MemberSignature Language="ILAsm" Value=".property instance string MyProperty" />
       <MemberType>Property</MemberType>
       <AssemblyInfo apistyle="classic">
-        <AssemblyVersion>0.0.0.0</AssemblyVersion>
         <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <AssemblyInfo apistyle="unified">
-        <AssemblyVersion>0.0.0.0</AssemblyVersion>
         <AssemblyName>DocTest-DropNS-unified</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <AssemblyInfo apistyle="classic">
         <AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName>
       <MemberSignature Language="ILAsm" Value=".property instance float64 OnlyInClassic" />
       <MemberType>Property</MemberType>
       <AssemblyInfo apistyle="classic">
-        <AssemblyVersion>0.0.0.0</AssemblyVersion>
         <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <AssemblyInfo apistyle="classic">
         <AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName>
       <MemberSignature Language="ILAsm" Value=".property instance char OnlyInUnified" />
       <MemberType>Property</MemberType>
       <AssemblyInfo apistyle="unified">
-        <AssemblyVersion>0.0.0.0</AssemblyVersion>
         <AssemblyName>DocTest-DropNS-unified</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <AssemblyInfo apistyle="unified">
         <AssemblyName>DocTest-DropNS-unified-multitest</AssemblyName>
diff --git a/mcs/tools/mdoc/Test/en.expected-dropns-multi-withexisting/MyFramework.MyNamespace/MyClassExtensions.xml b/mcs/tools/mdoc/Test/en.expected-dropns-multi-withexisting/MyFramework.MyNamespace/MyClassExtensions.xml
new file mode 100644 (file)
index 0000000..7a504e2
--- /dev/null
@@ -0,0 +1,63 @@
+<Type Name="MyClassExtensions" FullName="MyFramework.MyNamespace.MyClassExtensions">
+  <TypeSignature Language="C#" Value="public static class MyClassExtensions" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit MyClassExtensions extends System.Object" />
+  <AssemblyInfo apistyle="classic">
+    <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <AssemblyInfo apistyle="unified">
+    <AssemblyName>DocTest-DropNS-unified</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <AssemblyInfo apistyle="classic">
+    <AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <AssemblyInfo apistyle="unified">
+    <AssemblyName>DocTest-DropNS-unified-multitest</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.Object</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Members>
+    <Member MemberName="AnExtension">
+      <MemberSignature Language="C#" Value="public static bool AnExtension (this MyFramework.MyNamespace.MyClass value);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool AnExtension(class MyFramework.MyNamespace.MyClass value) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified-multitest</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="value" Type="MyFramework.MyNamespace.MyClass" RefType="this" />
+      </Parameters>
+      <Docs>
+        <param name="value">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
index 6b5124ac28c21ac75ee214219b4f4c569e84a21b..734bd3da1a49741887d2e6155e3fe8926033e35b 100644 (file)
   <Types>
     <Namespace Name="MyFramework.MyNamespace">
       <Type Name="MyClass" Kind="Class" />
+      <Type Name="MyClassExtensions" Kind="Class" />
       <Type Name="OnlyInMulti" Kind="Class" />
     </Namespace>
   </Types>
   <Title>DocTest-DropNS-classic</Title>
+  <ExtensionMethods>
+    <ExtensionMethod>
+      <Targets>
+        <Target Type="T:MyFramework.MyNamespace.MyClass" />
+      </Targets>
+      <Member MemberName="AnExtension">
+        <MemberSignature Language="C#" Value="public static bool AnExtension (this MyFramework.MyNamespace.MyClass value);" />
+        <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool AnExtension(class MyFramework.MyNamespace.MyClass value) cil managed" />
+        <MemberType>ExtensionMethod</MemberType>
+        <ReturnValue>
+          <ReturnType>System.Boolean</ReturnType>
+        </ReturnValue>
+        <Parameters>
+          <Parameter Name="value" Type="MyFramework.MyNamespace.MyClass" RefType="this" />
+        </Parameters>
+        <Docs>
+          <param name="value">To be added.</param>
+          <summary>To be added.</summary>
+        </Docs>
+        <Link Type="MyFramework.MyNamespace.MyClassExtensions" Member="M:MyFramework.MyNamespace.MyClassExtensions.AnExtension(MyFramework.MyNamespace.MyClass)" />
+      </Member>
+    </ExtensionMethod>
+  </ExtensionMethods>
 </Overview>
diff --git a/mcs/tools/mdoc/Test/en.expected-dropns-multi/MyFramework.MyNamespace/MyClassExtensions.xml b/mcs/tools/mdoc/Test/en.expected-dropns-multi/MyFramework.MyNamespace/MyClassExtensions.xml
new file mode 100644 (file)
index 0000000..c3e0ca7
--- /dev/null
@@ -0,0 +1,63 @@
+<Type Name="MyClassExtensions" FullName="MyFramework.MyNamespace.MyClassExtensions">
+  <TypeSignature Language="C#" Value="public static class MyClassExtensions" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit MyClassExtensions extends System.Object" />
+  <AssemblyInfo apistyle="classic">
+    <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <AssemblyInfo apistyle="classic">
+    <AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <AssemblyInfo apistyle="unified">
+    <AssemblyName>DocTest-DropNS-unified</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <AssemblyInfo apistyle="unified">
+    <AssemblyName>DocTest-DropNS-unified-multitest</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.Object</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Members>
+    <Member MemberName="AnExtension">
+      <MemberSignature Language="C#" Value="public static bool AnExtension (this MyFramework.MyNamespace.MyClass value);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool AnExtension(class MyFramework.MyNamespace.MyClass value) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified-multitest</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="value" Type="MyFramework.MyNamespace.MyClass" RefType="this" />
+      </Parameters>
+      <Docs>
+        <param name="value">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
index 3baf401ce5b0908025e2a0ba9a5f654267f5100f..b8345d02166fae8199680b18a2cd85dcf9b4f4c4 100644 (file)
   <Types>
     <Namespace Name="MyFramework.MyNamespace">
       <Type Name="MyClass" Kind="Class" />
+      <Type Name="MyClassExtensions" Kind="Class" />
       <Type Name="OnlyInMulti" Kind="Class" />
     </Namespace>
   </Types>
   <Title>Untitled</Title>
+  <ExtensionMethods>
+    <ExtensionMethod>
+      <Targets>
+        <Target Type="T:MyFramework.MyNamespace.MyClass" />
+      </Targets>
+      <Member MemberName="AnExtension">
+        <MemberSignature Language="C#" Value="public static bool AnExtension (this MyFramework.MyNamespace.MyClass value);" />
+        <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool AnExtension(class MyFramework.MyNamespace.MyClass value) cil managed" />
+        <MemberType>ExtensionMethod</MemberType>
+        <ReturnValue>
+          <ReturnType>System.Boolean</ReturnType>
+        </ReturnValue>
+        <Parameters>
+          <Parameter Name="value" Type="MyFramework.MyNamespace.MyClass" RefType="this" />
+        </Parameters>
+        <Docs>
+          <param name="value">To be added.</param>
+          <summary>To be added.</summary>
+        </Docs>
+        <Link Type="MyFramework.MyNamespace.MyClassExtensions" Member="M:MyFramework.MyNamespace.MyClassExtensions.AnExtension(MyFramework.MyNamespace.MyClass)" />
+      </Member>
+    </ExtensionMethod>
+  </ExtensionMethods>
 </Overview>
index d117d7fc288b04332a61ef76957eb4f0bded1779..8641db0542df3a02259fee4597a6bc32353a49d1 100644 (file)
@@ -694,6 +694,11 @@ sgen_client_binary_protocol_header (long long check, int version, int ptr_size,
 {
 }
 
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_pin_stats (int objects_pinned_in_nursery, size_t bytes_pinned_in_nursery, int objects_pinned_in_major, size_t bytes_pinned_in_major)
+{
+}
+
 int sgen_thread_handshake (BOOL suspend);
 gboolean sgen_suspend_thread (SgenThreadInfo *info);
 gboolean sgen_resume_thread (SgenThreadInfo *info);
index 862871c771206b1b1fb73ecf4ccee1ed57bbf895..aaece7e29ca2b7d04c20ba7ead5b8fbb4a7e78a3 100644 (file)
@@ -897,7 +897,7 @@ mono_gc_clear_domain (MonoDomain * domain)
        major_collector.iterate_objects (ITERATE_OBJECTS_SWEEP_PINNED, (IterateObjectCallbackFunc)clear_domain_free_major_pinned_object_callback, domain);
 
        if (domain == mono_get_root_domain ()) {
-               sgen_pin_stats_print_class_stats ();
+               sgen_pin_stats_report ();
                sgen_object_layout_dump (stdout);
        }
 
index 05dfe7d90743b041f12bcf26d587213920fe46c0..50369b0a783f22a7314279f70f0416c6a3ab84aa 100644 (file)
@@ -410,7 +410,7 @@ static void
 sgen_card_table_clear_cards (void)
 {
        /*XXX we could do this in 2 ways. using mincore or iterating over all sections/los objects */
-       sgen_major_collector_iterate_live_block_ranges (clear_cards);
+       sgen_major_collector_iterate_block_ranges (clear_cards);
        sgen_los_iterate_live_block_ranges (clear_cards);
 }
 
@@ -431,7 +431,7 @@ sgen_card_table_scan_remsets (ScanCopyContext ctx)
 #ifdef SGEN_HAVE_OVERLAPPING_CARDS
        /*FIXME we should have a bit on each block/los object telling if the object have marked cards.*/
        /*First we copy*/
-       sgen_major_collector_iterate_live_block_ranges (move_cards_to_shadow_table);
+       sgen_major_collector_iterate_block_ranges (move_cards_to_shadow_table);
        sgen_los_iterate_live_block_ranges (move_cards_to_shadow_table);
 
        /*Then we clear*/
index 560d6e3090b15c66e55e89d121131bc674192bb9..b327ebd5a4d74b5e221611b0951d8695f57440b0 100644 (file)
@@ -701,7 +701,7 @@ pin_objects_from_nursery_pin_queue (gboolean do_scan_objects, ScanCopyContext ct
 
                        pin_object (obj_to_pin);
                        GRAY_OBJECT_ENQUEUE (queue, obj_to_pin, desc);
-                       sgen_pin_stats_register_object (obj_to_pin, obj_to_pin_size);
+                       sgen_pin_stats_register_object (obj_to_pin, GENERATION_NURSERY);
                        definitely_pinned [count] = obj_to_pin;
                        count++;
                }
@@ -736,6 +736,8 @@ pin_objects_in_nursery (gboolean do_scan_objects, ScanCopyContext ctx)
 void
 sgen_pin_object (GCObject *object, GrayQueue *queue)
 {
+       SGEN_ASSERT (0, sgen_ptr_in_nursery (object), "We're only supposed to use this for pinning nursery objects when out of memory.");
+
        /*
         * All pinned objects are assumed to have been staged, so we need to stage as well.
         * Also, the count of staged objects shows that "late pinning" happened.
@@ -746,7 +748,7 @@ sgen_pin_object (GCObject *object, GrayQueue *queue)
        binary_protocol_pin (object, (gpointer)LOAD_VTABLE (object), safe_object_get_size (object));
 
        ++objects_pinned;
-       sgen_pin_stats_register_object (object, safe_object_get_size (object));
+       sgen_pin_stats_register_object (object, GENERATION_NURSERY);
 
        GRAY_OBJECT_ENQUEUE (queue, object, sgen_obj_get_descriptor_safe (object));
 }
@@ -1578,7 +1580,7 @@ collect_nursery (const char *reason, gboolean is_overflow, SgenGrayQueue *unpin_
        time_minor_scan_remsets += TV_ELAPSED (atv, btv);
        SGEN_LOG (2, "Old generation scan: %lld usecs", (long long)TV_ELAPSED (atv, btv));
 
-       sgen_pin_stats_print_class_stats ();
+       sgen_pin_stats_report ();
 
        /* FIXME: Why do we do this at this specific, seemingly random, point? */
        sgen_client_collecting_minor (&fin_ready_queue, &critical_fin_queue);
@@ -1775,7 +1777,7 @@ major_copy_or_mark_from_roots (size_t *old_next_pin_slot, CopyOrMarkFromRootsMod
                        sgen_los_pin_object (bigobj->data);
                        if (SGEN_OBJECT_HAS_REFERENCES (bigobj->data))
                                GRAY_OBJECT_ENQUEUE (WORKERS_DISTRIBUTE_GRAY_QUEUE, bigobj->data, sgen_obj_get_descriptor ((GCObject*)bigobj->data));
-                       sgen_pin_stats_register_object (bigobj->data, safe_object_get_size (bigobj->data));
+                       sgen_pin_stats_register_object (bigobj->data, GENERATION_OLD);
                        SGEN_LOG (6, "Marked large object %p (%s) size: %lu from roots", bigobj->data,
                                        sgen_client_vtable_get_name (SGEN_LOAD_VTABLE (bigobj->data)),
                                        (unsigned long)sgen_los_object_size (bigobj));
@@ -1861,7 +1863,7 @@ major_copy_or_mark_from_roots (size_t *old_next_pin_slot, CopyOrMarkFromRootsMod
                time_major_scan_mod_union += TV_ELAPSED (btv, atv);
        }
 
-       sgen_pin_stats_print_class_stats ();
+       sgen_pin_stats_report ();
 }
 
 static void
@@ -3161,6 +3163,12 @@ sgen_major_collector_iterate_live_block_ranges (sgen_cardtable_block_callback ca
        major_collector.iterate_live_block_ranges (callback);
 }
 
+void
+sgen_major_collector_iterate_block_ranges (sgen_cardtable_block_callback callback)
+{
+       major_collector.iterate_block_ranges (callback);
+}
+
 SgenMajorCollector*
 sgen_get_major_collector (void)
 {
index f688748a45e455887b68f438278b9b89943b9c7b..3a86cc44f5f9bd077365a6525a26fc1f1735c373 100644 (file)
@@ -432,9 +432,9 @@ void* sgen_alloc_internal_dynamic (size_t size, int type, gboolean assert_on_fai
 void sgen_free_internal_dynamic (void *addr, size_t size, int type);
 
 void sgen_pin_stats_enable (void);
-void sgen_pin_stats_register_object (GCObject *obj, size_t size);
+void sgen_pin_stats_register_object (GCObject *obj, int generation);
 void sgen_pin_stats_register_global_remset (GCObject *obj);
-void sgen_pin_stats_print_class_stats (void);
+void sgen_pin_stats_report (void);
 
 void sgen_sort_addresses (void **array, size_t size);
 void sgen_add_to_global_remset (gpointer ptr, GCObject *obj);
@@ -571,6 +571,7 @@ sgen_update_reference (GCObject **p, GCObject *o, gboolean allow_null)
 
 typedef void (*sgen_cardtable_block_callback) (mword start, mword size);
 void sgen_major_collector_iterate_live_block_ranges (sgen_cardtable_block_callback callback);
+void sgen_major_collector_iterate_block_ranges (sgen_cardtable_block_callback callback);
 
 typedef enum {
        ITERATE_OBJECTS_SWEEP = 1,
@@ -625,6 +626,7 @@ struct _SgenMajorCollector {
        void (*pin_major_object) (GCObject *obj, SgenGrayQueue *queue);
        void (*scan_card_table) (CardTableScanType scan_type, ScanCopyContext ctx);
        void (*iterate_live_block_ranges) (sgen_cardtable_block_callback callback);
+       void (*iterate_block_ranges) (sgen_cardtable_block_callback callback);
        void (*update_cardtable_mod_union) (void);
        void (*init_to_space) (void);
        void (*sweep) (void);
index ad2bb6fe272a44cbf08ce80ac65da5dbd177a0c7..3c96a2f0106bfc78cf20bca223315e7bd3f8c63a 100644 (file)
@@ -117,7 +117,7 @@ COPY_OR_MARK_FUNCTION_NAME (GCObject **ptr, GCObject *obj, SgenGrayQueue *queue)
                MS_CALC_MARK_BIT (word, bit, obj);
                SGEN_ASSERT (9, !MS_MARK_BIT (block, word, bit), "object %p already marked", obj);
                MS_SET_MARK_BIT (block, word, bit);
-               binary_protocol_mark (obj, (gpointer)LOAD_VTABLE (obj), sgen_safe_object_get_size (obj));
+               binary_protocol_mark (obj, (gpointer)SGEN_LOAD_VTABLE (obj), sgen_safe_object_get_size (obj));
 
                return FALSE;
 #endif
index dad1b249af11f4c68e570f0c11d63d9fe960b8d9..f2c646b3952f678b513bd74b6f7667f110ca4a24 100644 (file)
@@ -194,16 +194,23 @@ static SgenArrayList allocated_blocks = SGEN_ARRAY_LIST_INIT (NULL, NULL, NULL,
 static void *empty_blocks = NULL;
 static size_t num_empty_blocks = 0;
 
+/*
+ * We can iterate the block list also while sweep is in progress but we
+ * need to account for blocks that will be checked for sweeping and even
+ * freed in the process.
+ */
 #define FOREACH_BLOCK_NO_LOCK(bl) {                                    \
        volatile gpointer *slot;                                                \
-       SGEN_ASSERT (0, !sweep_in_progress (), "Can't iterate blocks while sweep is in progress."); \
        SGEN_ARRAY_LIST_FOREACH_SLOT (&allocated_blocks, slot) {        \
-               (bl) = BLOCK_UNTAG (*slot);
+               (bl) = BLOCK_UNTAG (*slot);                             \
+               if (!(bl))                                              \
+                       continue;
 #define FOREACH_BLOCK_HAS_REFERENCES_NO_LOCK(bl,hr) {                  \
        volatile gpointer *slot;                                                \
-       SGEN_ASSERT (0, !sweep_in_progress (), "Can't iterate blocks while sweep is in progress."); \
        SGEN_ARRAY_LIST_FOREACH_SLOT (&allocated_blocks, slot) {        \
                (bl) = (MSBlockInfo *) (*slot);                 \
+               if (!(bl))                                              \
+                       continue;                                       \
                (hr) = BLOCK_IS_TAGGED_HAS_REFERENCES ((bl));           \
                (bl) = BLOCK_UNTAG ((bl));
 #define END_FOREACH_BLOCK_NO_LOCK      } SGEN_ARRAY_LIST_END_FOREACH_SLOT; }
@@ -549,16 +556,6 @@ ms_alloc_block (int size_index, gboolean pinned, gboolean has_references)
 
        add_free_block (free_blocks, size_index, info);
 
-       /*
-        * Adding to the allocated_blocks array is racy with the removal of nulls when
-        * sweeping. We wait for sweep to finish to avoid that.
-        *
-        * The memory barrier here and in `sweep_job_func()` are required because we need
-        * `allocated_blocks` synchronized between this and the sweep thread.
-        */
-       major_finish_sweep_checking ();
-       mono_memory_barrier ();
-
        sgen_array_list_add (&allocated_blocks, BLOCK_TAG (info), 0, FALSE);
 
        SGEN_ATOMIC_ADD_P (num_major_sections, 1);
@@ -1084,19 +1081,6 @@ major_block_is_evacuating (MSBlockInfo *block)
        return FALSE;
 }
 
-#define LOAD_VTABLE    SGEN_LOAD_VTABLE
-
-#define MS_MARK_OBJECT_AND_ENQUEUE_CHECKED(obj,desc,block,queue) do {  \
-               int __word, __bit;                                      \
-               MS_CALC_MARK_BIT (__word, __bit, (obj));                \
-               if (!MS_MARK_BIT ((block), __word, __bit) && MS_OBJ_ALLOCED ((obj), (block))) { \
-                       MS_SET_MARK_BIT ((block), __word, __bit);       \
-                       if (sgen_gc_descr_has_references (desc))                        \
-                               GRAY_OBJECT_ENQUEUE ((queue), (obj), (desc)); \
-                       binary_protocol_mark ((obj), (gpointer)LOAD_VTABLE ((obj)), sgen_safe_object_get_size ((obj))); \
-                       INC_NUM_MAJOR_OBJECTS_MARKED ();                \
-               }                                                       \
-       } while (0)
 #define MS_MARK_OBJECT_AND_ENQUEUE(obj,desc,block,queue) do {          \
                int __word, __bit;                                      \
                MS_CALC_MARK_BIT (__word, __bit, (obj));                \
@@ -1105,7 +1089,7 @@ major_block_is_evacuating (MSBlockInfo *block)
                        MS_SET_MARK_BIT ((block), __word, __bit);       \
                        if (sgen_gc_descr_has_references (desc))                        \
                                GRAY_OBJECT_ENQUEUE ((queue), (obj), (desc)); \
-                       binary_protocol_mark ((obj), (gpointer)LOAD_VTABLE ((obj)), sgen_safe_object_get_size ((obj))); \
+                       binary_protocol_mark ((obj), (gpointer)SGEN_LOAD_VTABLE ((obj)), sgen_safe_object_get_size ((obj))); \
                        INC_NUM_MAJOR_OBJECTS_MARKED ();                \
                }                                                       \
        } while (0)
@@ -1256,8 +1240,6 @@ mark_pinned_objects_in_block (MSBlockInfo *block, size_t first_entry, size_t las
        if (first_entry == last_entry)
                return;
 
-       block->has_pinned = TRUE;
-
        entry = sgen_pinning_get_entry (first_entry);
        end = sgen_pinning_get_entry (last_entry);
 
@@ -1268,9 +1250,19 @@ mark_pinned_objects_in_block (MSBlockInfo *block, size_t first_entry, size_t las
                if (index == last_index)
                        continue;
                obj = MS_BLOCK_OBJ (block, index);
-               MS_MARK_OBJECT_AND_ENQUEUE_CHECKED (obj, sgen_obj_get_descriptor (obj), block, queue);
+               if (!MS_OBJ_ALLOCED (obj, block))
+                       continue;
+               MS_MARK_OBJECT_AND_ENQUEUE (obj, sgen_obj_get_descriptor (obj), block, queue);
+               sgen_pin_stats_register_object (obj, GENERATION_OLD);
                last_index = index;
        }
+
+       /*
+        * There might have been potential pinning "pointers" into this block, but none of
+        * them pointed to occupied slots, in which case we don't have to pin the block.
+        */
+       if (last_index >= 0)
+               block->has_pinned = TRUE;
 }
 
 static inline void
@@ -1318,6 +1310,7 @@ set_block_state (MSBlockInfo *block, gint32 new_state, gint32 expected_state)
 {
        SGEN_ASSERT (6, block->state == expected_state, "Block state incorrect before set");
        block->state = new_state;
+       binary_protocol_block_set_state (block, MS_BLOCK_SIZE, expected_state, new_state);
 }
 
 /*
@@ -1431,6 +1424,8 @@ sweep_start (void)
                for (j = 0; j < num_block_obj_sizes; ++j)
                        free_blocks [j] = NULL;
        }
+
+       sgen_array_list_remove_nulls (&allocated_blocks);
 }
 
 static void sweep_finish (void);
@@ -1585,9 +1580,12 @@ static void
 sweep_blocks_job_func (void *thread_data_untyped, SgenThreadPoolJob *job)
 {
        volatile gpointer *slot;
+       MSBlockInfo *bl;
 
        SGEN_ARRAY_LIST_FOREACH_SLOT (&allocated_blocks, slot) {
-               sweep_block (BLOCK_UNTAG (*slot));
+               bl = BLOCK_UNTAG (*slot);
+               if (bl)
+                       sweep_block (bl);
        } SGEN_ARRAY_LIST_END_FOREACH_SLOT;
 
        mono_memory_write_barrier ();
@@ -1634,8 +1632,6 @@ sweep_job_func (void *thread_data_untyped, SgenThreadPoolJob *job)
                }
        }
 
-       sgen_array_list_remove_nulls (&allocated_blocks);
-
        /*
         * Concurrently sweep all the blocks to reduce workload during minor
         * pauses where we need certain blocks to be swept. At the start of
@@ -1714,7 +1710,7 @@ static int count_nonpinned_nonref;
 static void
 count_nonpinned_callback (GCObject *obj, size_t size, void *data)
 {
-       GCVTable vtable = LOAD_VTABLE (obj);
+       GCVTable vtable = SGEN_LOAD_VTABLE (obj);
 
        if (SGEN_VTABLE_HAS_REFERENCES (vtable))
                ++count_nonpinned_ref;
@@ -1725,7 +1721,7 @@ count_nonpinned_callback (GCObject *obj, size_t size, void *data)
 static void
 count_pinned_callback (GCObject *obj, size_t size, void *data)
 {
-       GCVTable vtable = LOAD_VTABLE (obj);
+       GCVTable vtable = SGEN_LOAD_VTABLE (obj);
 
        if (SGEN_VTABLE_HAS_REFERENCES (vtable))
                ++count_pinned_ref;
@@ -2224,6 +2220,18 @@ major_print_gc_param_usage (void)
 /*
  * This callback is used to clear cards, move cards to the shadow table and do counting.
  */
+static void
+major_iterate_block_ranges (sgen_cardtable_block_callback callback)
+{
+       MSBlockInfo *block;
+       gboolean has_references;
+
+       FOREACH_BLOCK_HAS_REFERENCES_NO_LOCK (block, has_references) {
+               if (has_references)
+                       callback ((mword)MS_BLOCK_FOR_BLOCK_INFO (block), MS_BLOCK_SIZE);
+       } END_FOREACH_BLOCK_NO_LOCK;
+}
+
 static void
 major_iterate_live_block_ranges (sgen_cardtable_block_callback callback)
 {
@@ -2423,12 +2431,15 @@ static void
 major_scan_card_table (CardTableScanType scan_type, ScanCopyContext ctx)
 {
        MSBlockInfo *block;
-       gboolean has_references;
+       gboolean has_references, was_sweeping, skip_scan;
 
        if (!concurrent_mark)
                g_assert (scan_type == CARDTABLE_SCAN_GLOBAL);
 
-       major_finish_sweep_checking ();
+       if (scan_type != CARDTABLE_SCAN_GLOBAL)
+               SGEN_ASSERT (0, !sweep_in_progress (), "Sweep should be finished when we scan mod union card table");
+       was_sweeping = sweep_in_progress ();
+
        binary_protocol_major_card_table_scan_start (sgen_timestamp (), scan_type & CARDTABLE_SCAN_MOD_UNION);
        FOREACH_BLOCK_HAS_REFERENCES_NO_LOCK (block, has_references) {
 #ifdef PREFETCH_CARDS
@@ -2446,8 +2457,36 @@ major_scan_card_table (CardTableScanType scan_type, ScanCopyContext ctx)
 
                if (!has_references)
                        continue;
+               skip_scan = FALSE;
 
-               scan_card_table_for_block (block, scan_type, ctx);
+               if (scan_type == CARDTABLE_SCAN_GLOBAL) {
+                       gpointer *card_start = (gpointer*) sgen_card_table_get_card_scan_address ((mword)MS_BLOCK_FOR_BLOCK_INFO (block));
+                       gboolean has_dirty_cards = FALSE;
+                       int i;
+                       for (i = 0; i < CARDS_PER_BLOCK / sizeof(gpointer); i++) {
+                               if (card_start [i]) {
+                                       has_dirty_cards = TRUE;
+                                       break;
+                               }
+                       }
+                       if (!has_dirty_cards) {
+                               skip_scan = TRUE;
+                       } else {
+                               /*
+                                * After the start of the concurrent collections, blocks change state
+                                * to marking. We should not sweep it in that case. We can't race with
+                                * sweep start since we are in a nursery collection. Also avoid CAS-ing
+                                */
+                               if (sweep_in_progress ()) {
+                                       skip_scan = !ensure_block_is_checked_for_sweeping (__index, TRUE, NULL);
+                               } else if (was_sweeping) {
+                                       /* Recheck in case sweep finished after dereferencing the slot */
+                                       skip_scan = *sgen_array_list_get_slot (&allocated_blocks, __index) == 0;
+                               }
+                       }
+               }
+               if (!skip_scan)
+                       scan_card_table_for_block (block, scan_type, ctx);
        } END_FOREACH_BLOCK_NO_LOCK;
        binary_protocol_major_card_table_scan_end (sgen_timestamp (), scan_type & CARDTABLE_SCAN_MOD_UNION);
 }
@@ -2584,6 +2623,7 @@ sgen_marksweep_init_internal (SgenMajorCollector *collector, gboolean is_concurr
        collector->pin_major_object = pin_major_object;
        collector->scan_card_table = major_scan_card_table;
        collector->iterate_live_block_ranges = major_iterate_live_block_ranges;
+       collector->iterate_block_ranges = major_iterate_block_ranges;
        if (is_concurrent) {
                collector->update_cardtable_mod_union = update_cardtable_mod_union;
                collector->get_cardtable_mod_union_for_reference = major_get_cardtable_mod_union_for_reference;
index 26fcfd116af32464cb5d01bcb1a6573144c5082e..ab00a56d66dd26cca6eb188000031cde4e95d3f0 100644 (file)
@@ -37,6 +37,9 @@ static gboolean do_pin_stats = FALSE;
 static PinStatAddress *pin_stat_addresses = NULL;
 static size_t pinned_byte_counts [PIN_TYPE_MAX];
 
+static size_t pinned_bytes_in_generation [GENERATION_MAX];
+static int pinned_objects_in_generation [GENERATION_MAX];
+
 static SgenPointerQueue pinned_objects = SGEN_POINTER_QUEUE_INIT (INTERNAL_MEM_STATISTICS);
 
 static SgenHashTable pinned_class_hash_table = SGEN_HASH_TABLE_INIT (INTERNAL_MEM_STATISTICS, INTERNAL_MEM_STAT_PINNED_CLASS, sizeof (PinnedClassEntry), g_str_hash, g_str_equal);
@@ -66,6 +69,10 @@ sgen_pin_stats_reset (void)
        pin_stat_addresses = NULL;
        for (i = 0; i < PIN_TYPE_MAX; ++i)
                pinned_byte_counts [i] = 0;
+       for (i = 0; i < GENERATION_MAX; ++i) {
+               pinned_bytes_in_generation [i] = 0;
+               pinned_objects_in_generation [i] = 0;
+       }
        sgen_pointer_queue_clear (&pinned_objects);
        sgen_hash_table_clean (&pinned_class_hash_table);
        sgen_hash_table_clean (&global_remset_class_hash_table);
@@ -78,6 +85,8 @@ sgen_pin_stats_register_address (char *addr, int pin_type)
        PinStatAddress *node;
        int pin_type_bit = 1 << pin_type;
 
+       if (!do_pin_stats)
+               return;
        while (*node_ptr) {
                node = *node_ptr;
                if (addr == node->addr) {
@@ -153,13 +162,23 @@ register_vtable (GCVTable vtable, int pin_types)
 }
 
 void
-sgen_pin_stats_register_object (GCObject *obj, size_t size)
+sgen_pin_stats_register_object (GCObject *obj, int generation)
 {
        int pin_types = 0;
+       size_t size = 0;
+
+       if (binary_protocol_is_enabled ()) {
+               size = sgen_safe_object_get_size (obj);
+               pinned_bytes_in_generation [generation] += size;
+               ++pinned_objects_in_generation [generation];
+       }
 
        if (!do_pin_stats)
                return;
 
+       if (!size)
+               size = sgen_safe_object_get_size (obj);
+
        pin_stats_count_object_from_tree (obj, size, pin_stat_addresses, &pin_types);
        sgen_pointer_queue_add (&pinned_objects, obj);
 
@@ -183,12 +202,15 @@ sgen_pin_stats_register_global_remset (GCObject *obj)
 }
 
 void
-sgen_pin_stats_print_class_stats (void)
+sgen_pin_stats_report (void)
 {
        char *name;
        PinnedClassEntry *pinned_entry;
        GlobalRemsetClassEntry *remset_entry;
 
+       binary_protocol_pin_stats (pinned_objects_in_generation [GENERATION_NURSERY], pinned_bytes_in_generation [GENERATION_NURSERY],
+                       pinned_objects_in_generation [GENERATION_OLD], pinned_bytes_in_generation [GENERATION_OLD]);
+
        if (!do_pin_stats)
                return;
 
index 41b8b83829183ecfcefe33f0a761c877c8b25f2c..e6f1f775c917bbfcece04939dda8a6d4d0e3e3a5 100644 (file)
@@ -449,6 +449,13 @@ MATCH_INDEX (BINARY_PROTOCOL_MATCH)
 IS_VTABLE_MATCH (FALSE)
 END_PROTOCOL_ENTRY_FLUSH
 
+BEGIN_PROTOCOL_ENTRY4 (binary_protocol_pin_stats, TYPE_INT, objects_pinned_in_nursery, TYPE_SIZE, bytes_pinned_in_nursery, TYPE_INT, objects_pinned_in_major, TYPE_SIZE, bytes_pinned_in_major)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (TRUE)
+MATCH_INDEX (BINARY_PROTOCOL_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY
+
 #undef BEGIN_PROTOCOL_ENTRY0
 #undef BEGIN_PROTOCOL_ENTRY1
 #undef BEGIN_PROTOCOL_ENTRY2
diff --git a/msvc/scripts/Microsoft.Build.pre b/msvc/scripts/Microsoft.Build.pre
new file mode 100644 (file)
index 0000000..7d981d5
--- /dev/null
@@ -0,0 +1 @@
+$(ProjectDir)\..\..\jay\jay.exe -ct &lt; $(ProjectDir)\..\..\jay\skeleton.cs $(ProjectDir)\Microsoft.Build.Internal\ExpressionParser.jay > $(ProjectDir)\Microsoft.Build.Internal\ExpressionParser.cs
diff --git a/msvc/scripts/System.ComponentModel.Composition.pre b/msvc/scripts/System.ComponentModel.Composition.pre
new file mode 100644 (file)
index 0000000..70fe6d0
--- /dev/null
@@ -0,0 +1 @@
+resgen $(ProjectDir)\src\ComponentModel\Strings.resx $(ProjectDir)\Microsoft.Internal.Strings.resx
\ No newline at end of file
diff --git a/msvc/scripts/System.Data.Services.Client.pre b/msvc/scripts/System.Data.Services.Client.pre
new file mode 100644 (file)
index 0000000..a8709db
--- /dev/null
@@ -0,0 +1 @@
+resgen $(ProjectDir)\Client\System.Data.Services.Client.txt $(ProjectDir)\Client\System.Data.Services.Client.resx
\ No newline at end of file
diff --git a/msvc/scripts/System.Web.Razor.pre b/msvc/scripts/System.Web.Razor.pre
new file mode 100644 (file)
index 0000000..a33b050
--- /dev/null
@@ -0,0 +1,2 @@
+resgen $(ProjectDir)\..\..\..\external\aspnetwebstack\src\CommonResources.resx $(ProjectDir)\System.Web.Razor.Common.CommonResources.resx
+resgen $(ProjectDir)\..\..\..\external\aspnetwebstack\src\System.Web.Razor\Resources\RazorResources.resx $(ProjectDir)\System.Web.Razor.Resources.RazorResources.resx
\ No newline at end of file
diff --git a/msvc/scripts/TODO.md b/msvc/scripts/TODO.md
new file mode 100644 (file)
index 0000000..7d195a3
--- /dev/null
@@ -0,0 +1,11 @@
+These are the tasks that are pending in the MSVC scripts to fully roll it out:
+
+[ ] Validate that all generated assemblies are identical
+[ ] Add support for listing CLEAN_FILES in the `csproj` file
+[ ] Adding an "install" target
+[ ] On Windows- have a solution that builds both runtime and libraries all in one
+[ ] Add the other profiles (mobile, iOS, etc)
+[ ] Generate the dependency files
+[ ] Eliminate the need for "build-libs.sh/build-libs.bat" at the toplevel with proper MSBuild idioms
+[ ] Integrate the "update-solution-files" with each build, so we auto-update the files on commits
+[ ] Make it work with MSBuild instead of xbuild
index 7c775bb70c9b554b0b0df1092e9c5ae59d026546..d442697c3ce92389f3396c4cd502b66b0bc57126 100644 (file)
@@ -795,6 +795,15 @@ class MsbuildGenerator {
                                var source = dk.Key;
                                if (source.EndsWith (".resources"))
                                        source = source.Replace (".resources", ".resx");
+
+                               // try to find a pre-built resource, and use that instead of trying to build it
+                               if (source.EndsWith (".resx")) {
+                                       var probe_prebuilt = Path.Combine (base_dir, source.Replace (".resx", ".resources.prebuilt"));
+                                       if (File.Exists (probe_prebuilt)) {
+                                               
+                                               source = GetRelativePath (base_dir + "/", probe_prebuilt);
+                                       }
+                               }
                                resources.AppendFormat ("    <EmbeddedResource Include=\"{0}\">" + NewLine, source);
                                resources.AppendFormat ("      <LogicalName>{0}</LogicalName>" + NewLine, dk.Value);
                                resources.AppendFormat ("    </EmbeddedResource>" + NewLine);
@@ -921,7 +930,7 @@ class MsbuildGenerator {
                int q = library.IndexOf ("-");
                if (q != -1)
                        target = target + Load (library.Substring (0, q) + suffix);
-                       
+
                if (target.IndexOf ("@MONO@") != -1){
                        target_unix = target.Replace ("@MONO@", "mono").Replace ("@CAT@", "cat");
                        target_windows = target.Replace ("@MONO@", "").Replace ("@CAT@", "type");
@@ -929,6 +938,10 @@ class MsbuildGenerator {
                        target_unix = target.Replace ("jay.exe", "jay");
                        target_windows = target;
                }
+               target_unix = target_unix.Replace ("@COPY@", "cp");
+               target_windows = target_unix.Replace ("@COPY@", "copy");
+
+               target_unix = target_unix.Replace ("\r", "");
                const string condition_unix    = "Condition=\" '$(OS)' != 'Windows_NT' \"";
                const string condition_windows = "Condition=\" '$(OS)' == 'Windows_NT' \"";
                var result =
diff --git a/msvc/scripts/ilasm.pre b/msvc/scripts/ilasm.pre
new file mode 100644 (file)
index 0000000..fec25b7
--- /dev/null
@@ -0,0 +1,2 @@
+$(ProjectDir)\..\jay\jay.exe -ct &lt; $(ProjectDir)\..\jay\skeleton.cs $(ProjectDir)\parser\ILParser.jay > $(ProjectDir)\ILParser.cs
+
index 0c19d3a7dc627f5bc4ff09e30aafa38670e73ff7..2126ebd7731d83ee32adb2f8868648e4874e7468 100644 (file)
@@ -1 +1,2 @@
 $(ProjectDir)\..\jay\jay.exe -ct &lt; $(ProjectDir)\..\jay\skeleton.cs $(ProjectDir)\cs-parser.jay > $(ProjectDir)\cs-parser.cs\r
+\r
index 77ecf6866502b1a3ca8022ecb976712d13e2362d..4c96e91ac0ebd54bf04d9ac3404ef021c596690b 100644 (file)
@@ -32,7 +32,7 @@
     </project>
     <project dir="class/System" library="System-basic">
       <boot>true</boot>
-      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:MONO -d:BOOTSTRAP_BASIC -nowarn:1699 -d:DISABLE_CAS_USE -lib:./../../class/lib/basic -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -d:MONO_SECURITY_ALIAS -d:CONFIGURATION_DEP -r:./../../class/lib/basic/System.Xml.dll -r:./../../class/lib/basic/System.Configuration.dll -r:MonoSecurity=./../../class/lib/basic/Mono.Security.dll</flags>
+      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:MONO -d:BOOTSTRAP_BASIC -nowarn:1699 -d:DISABLE_CAS_USE -lib:./../../class/lib/basic -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -d:MONO_FEATURE_MULTIPLE_APPDOMAINS -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -d:MONO_SECURITY_ALIAS -d:CONFIGURATION_DEP -r:./../../class/lib/basic/System.Xml.dll -r:./../../class/lib/basic/System.Configuration.dll -r:MonoSecurity=./../../class/lib/basic/Mono.Security.dll</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/basic/System.dll</library_output>
@@ -82,7 +82,7 @@
     </project>
     <project dir="class/System" library="System-build">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/build/mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -d:MONO_SECURITY_ALIAS -d:CONFIGURATION_DEP -r:./../../class/lib/build/System.Xml.dll -r:./../../class/lib/build/System.Configuration.dll -r:MonoSecurity=./../../class/lib/build/Mono.Security.dll</flags>
+      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/build/mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -d:MONO_FEATURE_MULTIPLE_APPDOMAINS -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -d:MONO_SECURITY_ALIAS -d:CONFIGURATION_DEP -r:./../../class/lib/build/System.Xml.dll -r:./../../class/lib/build/System.Configuration.dll -r:MonoSecurity=./../../class/lib/build/Mono.Security.dll</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/build/System.dll</library_output>
@@ -92,7 +92,7 @@
     </project>
     <project dir="class/System" library="System-bare-build">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/build/mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav</flags>
+      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/build/mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -d:MONO_FEATURE_MULTIPLE_APPDOMAINS -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/build/bare/System.dll</library_output>
     </project>
     <project dir="class/System" library="System-secxml-build">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/build/mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -d:MONO_SECURITY_ALIAS -r:./../../class/lib/build/bare/System.Xml.dll -r:MonoSecurity=./../../class/lib/build/Mono.Security.dll</flags>
+      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/build/mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -d:MONO_FEATURE_MULTIPLE_APPDOMAINS -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -d:MONO_SECURITY_ALIAS -r:./../../class/lib/build/bare/System.Xml.dll -r:MonoSecurity=./../../class/lib/build/Mono.Security.dll</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/build/secxml/System.dll</library_output>
     </project>
     <project dir="class/System" library="System-net_4_x">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/net_4_x/mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -d:MONO_SECURITY_ALIAS -d:CONFIGURATION_DEP -r:./../../class/lib/net_4_x/System.Xml.dll -r:./../../class/lib/net_4_x/System.Configuration.dll -r:MonoSecurity=./../../class/lib/net_4_x/Mono.Security.dll</flags>
+      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/net_4_x/mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -d:MONO_FEATURE_MULTIPLE_APPDOMAINS -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -d:MONO_SECURITY_ALIAS -d:CONFIGURATION_DEP -r:./../../class/lib/net_4_x/System.Xml.dll -r:./../../class/lib/net_4_x/System.Configuration.dll -r:MonoSecurity=./../../class/lib/net_4_x/Mono.Security.dll</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_x/System.dll</library_output>
     </project>
     <project dir="class/System" library="System-tests-net_4_x">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/net_4_x/mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_x/secxml/System.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME</flags>
+      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/net_4_x/mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_x/secxml/System.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -d:MONO_FEATURE_MULTIPLE_APPDOMAINS</flags>
       <output>net_4_x_System_test.dll</output>
       <built_sources></built_sources>
       <library_output>net_4_x_System_test.dll</library_output>
     </project>
     <project dir="class/System" library="System-bare-net_4_x">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/net_4_x/mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav</flags>
+      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/net_4_x/mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -d:MONO_FEATURE_MULTIPLE_APPDOMAINS -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_x/bare/System.dll</library_output>
     </project>
     <project dir="class/System" library="System-tests-net_4_x">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/net_4_x/mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_x/secxml/System.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME</flags>
+      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/net_4_x/mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_x/secxml/System.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -d:MONO_FEATURE_MULTIPLE_APPDOMAINS</flags>
       <output>net_4_x_System_test.dll</output>
       <built_sources></built_sources>
       <library_output>net_4_x_System_test.dll</library_output>
     </project>
     <project dir="class/System" library="System-secxml-net_4_x">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/net_4_x/mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -d:MONO_SECURITY_ALIAS -r:./../../class/lib/net_4_x/bare/System.Xml.dll -r:MonoSecurity=./../../class/lib/net_4_x/Mono.Security.dll</flags>
+      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/net_4_x/mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -d:MONO_FEATURE_MULTIPLE_APPDOMAINS -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -d:MONO_SECURITY_ALIAS -r:./../../class/lib/net_4_x/bare/System.Xml.dll -r:MonoSecurity=./../../class/lib/net_4_x/Mono.Security.dll</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_x/secxml/System.dll</library_output>
     </project>
     <project dir="class/System" library="System-tests-net_4_x">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/net_4_x/mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_x/secxml/System.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME</flags>
+      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/net_4_x/mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_x/secxml/System.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -d:MONO_FEATURE_MULTIPLE_APPDOMAINS</flags>
       <output>net_4_x_System_test.dll</output>
       <built_sources></built_sources>
       <library_output>net_4_x_System_test.dll</library_output>
       <boot></boot>
       <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/net_4_x/mscorlib.dll -debug -optimize /noconfig -r:System.Xml -r:System</flags>
       <output>mconfig.exe</output>
-      <built_sources>Mono.MonoConfig/consts.cs</built_sources>
+      <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_x/mconfig.exe</library_output>
       <fx_version>4.5</fx_version>
       <profile>net_4_x</profile>
index fba952f0701f56e37bebc921a4bd5de1510f0c88..20f78e5cf85b836bfc219964fc9d1a7f6af2cdbb 100644 (file)
@@ -17,6 +17,46 @@ class Prepare {
                        }
                }
        }
+
+       static void SystemDataConnectionReplace (string srcdir, string targetdir, string target, string ns, string factory, string conn)
+       {
+               var t = File.ReadAllText (Path.Combine (srcdir, "DbConnectionHelper.cs"));
+
+               File.WriteAllText (Path.Combine (targetdir, target), t.Replace ("NAMESPACE", ns).Replace ("CONNECTIONFACTORYOBJECTNAME", factory).Replace ("CONNECTIONOBJECTNAME", conn));
+       }
+
+       static void SystemDataParameterReplace (string srcdir, string targetdir, string target, string resns, string ns, string parname)
+       {
+               var t = File.ReadAllText (Path.Combine (srcdir, "DbParameterHelper.cs"));
+
+               File.WriteAllText (Path.Combine (targetdir, target), t.Replace ("RESNAMESPACE", resns).Replace ("NAMESPACE", ns).Replace ("PARAMETEROBJECTNAME", parname));
+       }
+
+       static void SystemDataParameterCollReplace (string srcdir, string targetdir, string target, string resns, string ns, string parname)
+       {
+               var t = File.ReadAllText (Path.Combine (srcdir, "DbParameterCollectionHelper.cs"));
+
+               Console.WriteLine ("Creating " + Path.Combine (targetdir, target));
+               File.WriteAllText (Path.Combine (targetdir, target), t.Replace ("RESNAMESPACE", resns).Replace ("PARAMETERCOLLECTIONOBJECTNAME", parname + "Collection").Replace ("NAMESPACE", ns).Replace ("PARAMETEROBJECTNAME", parname));
+       }
+       
+       static void GenerateSystemData (string bdir)
+       {
+               var rs = Path.Combine (bdir, "class", "referencesource", "System.Data", "System", "Data", "ProviderBase");
+               var sd = Path.Combine (bdir, "class", "System.Data");
+
+               SystemDataConnectionReplace (rs, sd, "gen_OdbcConnection.cs", "System.Data.Odbc", "OdbcConnectionFactory.SingletonInstance", "OdbcConnection");
+               SystemDataConnectionReplace (rs, sd, "gen_OleDbConnection.cs", "System.Data.OleDb", "OleDbConnectionFactory.SingletonInstance", "OleDbConnection");
+               SystemDataConnectionReplace (rs, sd, "gen_SqlConnection.cs", "System.Data.SqlClient", "SqlConnectionFactory.SingletonInstance", "SqlConnection");
+
+               SystemDataParameterReplace (rs, sd, "gen_OdbcParameter.cs", "System.Data", "System.Data.Odbc", "OdbcParameter");
+               SystemDataParameterReplace (rs, sd, "gen_OleDbParameter.cs", "System.Data", "System.Data.OleDb", "OleDbParameter");
+               SystemDataParameterReplace (rs, sd, "gen_SqlParameter.cs", "System.Data", "System.Data.SqlClient", "SqlParameter");
+
+               SystemDataParameterCollReplace (rs, sd, "gen_OdbcParameterCollection.cs", "System.Data", "System.Data.Odbc", "OdbcParameter");
+               SystemDataParameterCollReplace (rs, sd, "gen_OleDbParameterCollection.cs", "System.Data", "System.Data.OleDb", "OleDbParameter");
+               SystemDataParameterCollReplace (rs, sd, "gen_SqlParameterCollection.cs", "System.Data", "System.Data.SqlClient", "SqlParameter");
+       }
        
        static void Main (string [] args)
        {
@@ -32,6 +72,8 @@ class Prepare {
                        Filter (bdir + "/build/common/Consts.cs.in",
                                bdir + "/build/common/Consts.cs",
                                (i, o) => o.Write (i.ReadToEnd ().Replace ("@MONO_VERSION@", "2.5.0")));
+
+                       GenerateSystemData (bdir);
                        break;
                        
                default: