diff --git a/Makefile.am b/Makefile.am
index 3542279772..c44c4b93c0 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,5 +1,7 @@
ACLOCAL_AMFLAGS = -I m4
+AM_CFLAGS = $(WERROR_CFLAGS)
+
MONOTOUCH_SUBDIRS = $(libgc_dir) eglib/src mono
if CROSS_COMPILING
@@ -48,7 +50,9 @@ GIT_DIR ?= $(srcdir)/.git
dist-hook:
test -d $(distdir)/mcs || mkdir $(distdir)/mcs
d=`cd $(distdir)/mcs && pwd`; cd $(mcs_topdir) && $(MAKE) distdir=$$d dist-recursive
- rm -rf `find $(top_distdir)/external -path '*\.git' -and -type d`
+ rm -rf `find $(top_distdir)/external -path '*\.git'`
+ rm -f `find $(top_distdir)/external -path '*\.exe'`
+ rm -f `find $(top_distdir)/external -path '*\.dll'`
cp mcs/class/lib/basic/System.Configuration.dll mcs/class/lib/monolite/
cp mcs/class/lib/basic/System.Security.dll mcs/class/lib/monolite/
# Disable this for now because it is very slow and causes wrench to timeout:
diff --git a/Makefile.in b/Makefile.in
index 7ab824852e..b419fadcd2 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -85,7 +85,7 @@ DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
$(srcdir)/config.h.in mkinstalldirs \
$(srcdir)/mono-core.spec.in $(srcdir)/mono-uninstalled.pc.in \
AUTHORS COPYING.LIB ChangeLog NEWS compile config.guess \
- config.rpath config.sub install-sh missing ltmain.sh
+ config.rpath config.sub depcomp install-sh missing ltmain.sh
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -246,6 +246,7 @@ ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+GDKX11 = @GDKX11@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_LIBS = @GLIB_LIBS@
@@ -254,6 +255,7 @@ GMODULE_LIBS = @GMODULE_LIBS@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
+GTKX11 = @GTKX11@
HAVE_MSGFMT = @HAVE_MSGFMT@
HOST_CC = @HOST_CC@
INSTALL = @INSTALL@
@@ -320,6 +322,7 @@ SQLITE3 = @SQLITE3@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
+WERROR_CFLAGS = @WERROR_CFLAGS@
X11 = @X11@
XATTR_LIB = @XATTR_LIB@
XGETTEXT = @XGETTEXT@
@@ -369,6 +372,7 @@ install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
libgc_dir = @libgc_dir@
+libgdiplus_install_loc = @libgdiplus_install_loc@
libgdiplus_loc = @libgdiplus_loc@
libmono_cflags = @libmono_cflags@
libmono_ldflags = @libmono_ldflags@
@@ -403,6 +407,7 @@ top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
ACLOCAL_AMFLAGS = -I m4
+AM_CFLAGS = $(WERROR_CFLAGS)
MONOTOUCH_SUBDIRS = $(libgc_dir) eglib/src mono
@CROSS_COMPILING_FALSE@@ONLY_MONOTOUCH_FALSE@@ONLY_XAMMAC_FALSE@SUBDIRS = po $(libgc_dir) eglib mono $(ikvm_native_dir) support data runtime scripts man samples msvc $(docs_dir)
@CROSS_COMPILING_FALSE@@ONLY_MONOTOUCH_FALSE@@ONLY_XAMMAC_TRUE@SUBDIRS = $(libgc_dir) eglib/src mono runtime
@@ -936,7 +941,9 @@ GIT_DIR ?= $(srcdir)/.git
dist-hook:
test -d $(distdir)/mcs || mkdir $(distdir)/mcs
d=`cd $(distdir)/mcs && pwd`; cd $(mcs_topdir) && $(MAKE) distdir=$$d dist-recursive
- rm -rf `find $(top_distdir)/external -path '*\.git' -and -type d`
+ rm -rf `find $(top_distdir)/external -path '*\.git'`
+ rm -f `find $(top_distdir)/external -path '*\.exe'`
+ rm -f `find $(top_distdir)/external -path '*\.dll'`
cp mcs/class/lib/basic/System.Configuration.dll mcs/class/lib/monolite/
cp mcs/class/lib/basic/System.Security.dll mcs/class/lib/monolite/
.PHONY: get-monolite-latest
diff --git a/README.md b/README.md
index 07c950004d..d600ce4ad1 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,8 @@
Mono is a software platform designed to allow developers to easily create cross platform applications.
Mono is an open source implementation of Microsoft's .NET Framework based on the ECMA standards for C# and the Common Language Runtime.
+[![Build Status](http://monojenkins.cloudapp.net/job/Mono/badge/icon)](http://monojenkins.cloudapp.net/job/Mono/)
+
1. [Installation](#compilation-and-installation)
2. [Using Mono](#using-mono)
3. [Directory Roadmap](#directory-roadmap)
@@ -34,6 +36,10 @@ a. Build Requirements
* libzlib - This library and the development headers are required for compression
file support in the 2.0 profile.
+ 4. Mono is required to build Mono. Use a system package or monolite (explained further below)
+
+ 5. If you have a system Mono (not monolite), you will need to read this: http://mono-project.com/Parallel_Mono_Environments#Setting_up_a_Build_Environment
+
b. Building the Software
------------------------
diff --git a/acinclude.m4 b/acinclude.m4
index 16fecf7f86..5216cd14a5 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -22,7 +22,7 @@ if test x$GCC != xyes; then
dolt_supported=no
fi
case $host in
-i?86-*-linux*|x86_64-*-linux*|powerpc-*-linux*|powerpc64-*-linux* \
+i?86-*-linux*|i?86-apple-darwin*|x86_64-*-linux*|powerpc-*-linux*|powerpc64-*-linux* \
|amd64-*-freebsd*|i?86-*-freebsd*|ia64-*-freebsd*|arm*-*-linux*|sparc*-*-linux*|mips*-*-linux*|x86_64-apple-darwin*|aarch64*)
pic_options='-fPIC'
;;
@@ -158,7 +158,7 @@ modeok=false
tagok=false
for arg in "$[]@"; do
case "$arg" in
- --silent) ;;
+ --silent) ;;
--mode=compile) modeok=true ;;
--tag=CC|--tag=CXX) tagok=true ;;
--quiet) ;;
diff --git a/config.h.in b/config.h.in
index 3d03795cde..b8c09f6b4a 100644
--- a/config.h.in
+++ b/config.h.in
@@ -320,7 +320,7 @@
/* Define to 1 if you have the `getpriority' function. */
#undef HAVE_GETPRIORITY
-/* Define to 1 if you have the `GetProcessId' function. */
+/* Define if GetProcessId is available */
#undef HAVE_GETPROCESSID
/* Define to 1 if you have the `getpwent' function. */
@@ -924,9 +924,6 @@
/* native types */
#undef MONO_NATIVE_TYPES
-/* Sizeof sock_un.sun_path */
-#undef MONO_SIZEOF_SUNPATH
-
/* Reduce runtime requirements (and capabilities) */
#undef MONO_SMALL_CONFIG
diff --git a/configure.REMOVED.git-id b/configure.REMOVED.git-id
index ad3f1c707f..d901c34140 100644
--- a/configure.REMOVED.git-id
+++ b/configure.REMOVED.git-id
@@ -1 +1 @@
-9f9229ff6a1b6a8b0e8d4e4cb7632a66927b37d3
\ No newline at end of file
+e2d46ae5f394ada396886d241225ad895d4fa194
\ No newline at end of file
diff --git a/configure.ac.REMOVED.git-id b/configure.ac.REMOVED.git-id
index 049281c6e9..aefe5b6d2e 100644
--- a/configure.ac.REMOVED.git-id
+++ b/configure.ac.REMOVED.git-id
@@ -1 +1 @@
-8be4fb39c41e5d71d787a6c58748fed22d78f9eb
\ No newline at end of file
+9ad91a3e3e9b4a437dedfc1a32a3c9092d967f5e
\ No newline at end of file
diff --git a/data/Makefile.in b/data/Makefile.in
index 2bbc6658ce..75be628ba0 100644
--- a/data/Makefile.in
+++ b/data/Makefile.in
@@ -270,6 +270,7 @@ ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+GDKX11 = @GDKX11@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_LIBS = @GLIB_LIBS@
@@ -278,6 +279,7 @@ GMODULE_LIBS = @GMODULE_LIBS@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
+GTKX11 = @GTKX11@
HAVE_MSGFMT = @HAVE_MSGFMT@
HOST_CC = @HOST_CC@
INSTALL = @INSTALL@
@@ -344,6 +346,7 @@ SQLITE3 = @SQLITE3@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
+WERROR_CFLAGS = @WERROR_CFLAGS@
X11 = @X11@
XATTR_LIB = @XATTR_LIB@
XGETTEXT = @XGETTEXT@
@@ -393,6 +396,7 @@ install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
libgc_dir = @libgc_dir@
+libgdiplus_install_loc = @libgdiplus_install_loc@
libgdiplus_loc = @libgdiplus_loc@
libmono_cflags = @libmono_cflags@
libmono_ldflags = @libmono_ldflags@
diff --git a/data/config.in b/data/config.in
index 44fefc0802..51cac3f0b4 100644
--- a/data/config.in
+++ b/data/config.in
@@ -10,12 +10,14 @@
-
+
+
+
@@ -27,8 +29,8 @@
-
-
-
-
+
+
+
+
diff --git a/data/net_2_0/Browsers/Makefile.in b/data/net_2_0/Browsers/Makefile.in
index d250537399..ab93576d60 100644
--- a/data/net_2_0/Browsers/Makefile.in
+++ b/data/net_2_0/Browsers/Makefile.in
@@ -191,6 +191,7 @@ ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+GDKX11 = @GDKX11@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_LIBS = @GLIB_LIBS@
@@ -199,6 +200,7 @@ GMODULE_LIBS = @GMODULE_LIBS@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
+GTKX11 = @GTKX11@
HAVE_MSGFMT = @HAVE_MSGFMT@
HOST_CC = @HOST_CC@
INSTALL = @INSTALL@
@@ -265,6 +267,7 @@ SQLITE3 = @SQLITE3@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
+WERROR_CFLAGS = @WERROR_CFLAGS@
X11 = @X11@
XATTR_LIB = @XATTR_LIB@
XGETTEXT = @XGETTEXT@
@@ -314,6 +317,7 @@ install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
libgc_dir = @libgc_dir@
+libgdiplus_install_loc = @libgdiplus_install_loc@
libgdiplus_loc = @libgdiplus_loc@
libmono_cflags = @libmono_cflags@
libmono_ldflags = @libmono_ldflags@
diff --git a/data/net_2_0/Makefile.in b/data/net_2_0/Makefile.in
index 8207e36f43..c2af614394 100644
--- a/data/net_2_0/Makefile.in
+++ b/data/net_2_0/Makefile.in
@@ -251,6 +251,7 @@ ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+GDKX11 = @GDKX11@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_LIBS = @GLIB_LIBS@
@@ -259,6 +260,7 @@ GMODULE_LIBS = @GMODULE_LIBS@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
+GTKX11 = @GTKX11@
HAVE_MSGFMT = @HAVE_MSGFMT@
HOST_CC = @HOST_CC@
INSTALL = @INSTALL@
@@ -325,6 +327,7 @@ SQLITE3 = @SQLITE3@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
+WERROR_CFLAGS = @WERROR_CFLAGS@
X11 = @X11@
XATTR_LIB = @XATTR_LIB@
XGETTEXT = @XGETTEXT@
@@ -374,6 +377,7 @@ install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
libgc_dir = @libgc_dir@
+libgdiplus_install_loc = @libgdiplus_install_loc@
libgdiplus_loc = @libgdiplus_loc@
libmono_cflags = @libmono_cflags@
libmono_ldflags = @libmono_ldflags@
diff --git a/data/net_4_0/Browsers/Makefile.in b/data/net_4_0/Browsers/Makefile.in
index 3e8c51213f..aa143f1761 100644
--- a/data/net_4_0/Browsers/Makefile.in
+++ b/data/net_4_0/Browsers/Makefile.in
@@ -191,6 +191,7 @@ ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+GDKX11 = @GDKX11@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_LIBS = @GLIB_LIBS@
@@ -199,6 +200,7 @@ GMODULE_LIBS = @GMODULE_LIBS@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
+GTKX11 = @GTKX11@
HAVE_MSGFMT = @HAVE_MSGFMT@
HOST_CC = @HOST_CC@
INSTALL = @INSTALL@
@@ -265,6 +267,7 @@ SQLITE3 = @SQLITE3@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
+WERROR_CFLAGS = @WERROR_CFLAGS@
X11 = @X11@
XATTR_LIB = @XATTR_LIB@
XGETTEXT = @XGETTEXT@
@@ -314,6 +317,7 @@ install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
libgc_dir = @libgc_dir@
+libgdiplus_install_loc = @libgdiplus_install_loc@
libgdiplus_loc = @libgdiplus_loc@
libmono_cflags = @libmono_cflags@
libmono_ldflags = @libmono_ldflags@
diff --git a/data/net_4_0/Makefile.in b/data/net_4_0/Makefile.in
index bed5f8155a..8ab3173274 100644
--- a/data/net_4_0/Makefile.in
+++ b/data/net_4_0/Makefile.in
@@ -251,6 +251,7 @@ ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+GDKX11 = @GDKX11@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_LIBS = @GLIB_LIBS@
@@ -259,6 +260,7 @@ GMODULE_LIBS = @GMODULE_LIBS@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
+GTKX11 = @GTKX11@
HAVE_MSGFMT = @HAVE_MSGFMT@
HOST_CC = @HOST_CC@
INSTALL = @INSTALL@
@@ -325,6 +327,7 @@ SQLITE3 = @SQLITE3@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
+WERROR_CFLAGS = @WERROR_CFLAGS@
X11 = @X11@
XATTR_LIB = @XATTR_LIB@
XGETTEXT = @XGETTEXT@
@@ -374,6 +377,7 @@ install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
libgc_dir = @libgc_dir@
+libgdiplus_install_loc = @libgdiplus_install_loc@
libgdiplus_loc = @libgdiplus_loc@
libmono_cflags = @libmono_cflags@
libmono_ldflags = @libmono_ldflags@
diff --git a/data/net_4_5/Browsers/Makefile.in b/data/net_4_5/Browsers/Makefile.in
index a96424fd72..705e6f5f4f 100644
--- a/data/net_4_5/Browsers/Makefile.in
+++ b/data/net_4_5/Browsers/Makefile.in
@@ -191,6 +191,7 @@ ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+GDKX11 = @GDKX11@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_LIBS = @GLIB_LIBS@
@@ -199,6 +200,7 @@ GMODULE_LIBS = @GMODULE_LIBS@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
+GTKX11 = @GTKX11@
HAVE_MSGFMT = @HAVE_MSGFMT@
HOST_CC = @HOST_CC@
INSTALL = @INSTALL@
@@ -265,6 +267,7 @@ SQLITE3 = @SQLITE3@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
+WERROR_CFLAGS = @WERROR_CFLAGS@
X11 = @X11@
XATTR_LIB = @XATTR_LIB@
XGETTEXT = @XGETTEXT@
@@ -314,6 +317,7 @@ install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
libgc_dir = @libgc_dir@
+libgdiplus_install_loc = @libgdiplus_install_loc@
libgdiplus_loc = @libgdiplus_loc@
libmono_cflags = @libmono_cflags@
libmono_ldflags = @libmono_ldflags@
diff --git a/data/net_4_5/Makefile.in b/data/net_4_5/Makefile.in
index 7a2ae670ae..90ace16ee4 100644
--- a/data/net_4_5/Makefile.in
+++ b/data/net_4_5/Makefile.in
@@ -251,6 +251,7 @@ ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+GDKX11 = @GDKX11@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_LIBS = @GLIB_LIBS@
@@ -259,6 +260,7 @@ GMODULE_LIBS = @GMODULE_LIBS@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
+GTKX11 = @GTKX11@
HAVE_MSGFMT = @HAVE_MSGFMT@
HOST_CC = @HOST_CC@
INSTALL = @INSTALL@
@@ -325,6 +327,7 @@ SQLITE3 = @SQLITE3@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
+WERROR_CFLAGS = @WERROR_CFLAGS@
X11 = @X11@
XATTR_LIB = @XATTR_LIB@
XGETTEXT = @XGETTEXT@
@@ -374,6 +377,7 @@ install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
libgc_dir = @libgc_dir@
+libgdiplus_install_loc = @libgdiplus_install_loc@
libgdiplus_loc = @libgdiplus_loc@
libmono_cflags = @libmono_cflags@
libmono_ldflags = @libmono_ldflags@
diff --git a/docs/Makefile.in b/docs/Makefile.in
index fb1c30eeb3..d52148580a 100644
--- a/docs/Makefile.in
+++ b/docs/Makefile.in
@@ -191,6 +191,7 @@ ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+GDKX11 = @GDKX11@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_LIBS = @GLIB_LIBS@
@@ -199,6 +200,7 @@ GMODULE_LIBS = @GMODULE_LIBS@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
+GTKX11 = @GTKX11@
HAVE_MSGFMT = @HAVE_MSGFMT@
HOST_CC = @HOST_CC@
INSTALL = @INSTALL@
@@ -265,6 +267,7 @@ SQLITE3 = @SQLITE3@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
+WERROR_CFLAGS = @WERROR_CFLAGS@
X11 = @X11@
XATTR_LIB = @XATTR_LIB@
XGETTEXT = @XGETTEXT@
@@ -314,6 +317,7 @@ install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
libgc_dir = @libgc_dir@
+libgdiplus_install_loc = @libgdiplus_install_loc@
libgdiplus_loc = @libgdiplus_loc@
libmono_cflags = @libmono_cflags@
libmono_ldflags = @libmono_ldflags@
diff --git a/eglib/Makefile.am b/eglib/Makefile.am
index b7e5cd6389..84cc8353c9 100644
--- a/eglib/Makefile.am
+++ b/eglib/Makefile.am
@@ -1,5 +1,7 @@
ACLOCAL_AMFLAGS = -I m4
+AM_CFLAGS = $(WERROR_CFLAGS)
+
if HOST_WIN32
SUBDIRS = m4 src
else
diff --git a/eglib/Makefile.in b/eglib/Makefile.in
index e4837191da..2aee28e2d6 100644
--- a/eglib/Makefile.in
+++ b/eglib/Makefile.in
@@ -291,6 +291,7 @@ SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
+WERROR_CFLAGS = @WERROR_CFLAGS@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
@@ -348,6 +349,7 @@ top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
ACLOCAL_AMFLAGS = -I m4
+AM_CFLAGS = $(WERROR_CFLAGS)
@CROSS_COMPILING_FALSE@@HOST_WIN32_FALSE@@PLATFORM_DARWIN_FALSE@SUBDIRS = m4 src test
@CROSS_COMPILING_TRUE@@HOST_WIN32_FALSE@@PLATFORM_DARWIN_FALSE@SUBDIRS = m4 src
@HOST_WIN32_FALSE@@PLATFORM_DARWIN_TRUE@SUBDIRS = m4 src
diff --git a/eglib/acinclude.m4 b/eglib/acinclude.m4
index 526d00c1be..5216cd14a5 100644
--- a/eglib/acinclude.m4
+++ b/eglib/acinclude.m4
@@ -22,8 +22,8 @@ if test x$GCC != xyes; then
dolt_supported=no
fi
case $host in
-i?86-*-linux*|x86_64-*-linux*|powerpc-*-linux*|powerpc64-*-linux* \
-|amd64-*-freebsd*|i?86-*-freebsd*|ia64-*-freebsd*|arm*-*-linux*|sparc*-*-linux*|mips*-*-linux*)
+i?86-*-linux*|i?86-apple-darwin*|x86_64-*-linux*|powerpc-*-linux*|powerpc64-*-linux* \
+|amd64-*-freebsd*|i?86-*-freebsd*|ia64-*-freebsd*|arm*-*-linux*|sparc*-*-linux*|mips*-*-linux*|x86_64-apple-darwin*|aarch64*)
pic_options='-fPIC'
;;
?86-pc-cygwin*|i?86-pc-cygwin*)
diff --git a/eglib/config.h.in b/eglib/config.h.in
index dec81e46e0..50b2eb2421 100644
--- a/eglib/config.h.in
+++ b/eglib/config.h.in
@@ -60,6 +60,9 @@
/* Define to 1 if you have the `strtok_r' function. */
#undef HAVE_STRTOK_R
+/* Define to 1 if you have the header file. */
+#undef HAVE_SYS_SELECT_H
+
/* Define to 1 if you have the header file. */
#undef HAVE_SYS_STAT_H
diff --git a/eglib/configure.REMOVED.git-id b/eglib/configure.REMOVED.git-id
index 6ca6af8e50..7c814b9dcb 100644
--- a/eglib/configure.REMOVED.git-id
+++ b/eglib/configure.REMOVED.git-id
@@ -1 +1 @@
-14cd313adbe67ed6c268aa152076066abd759556
\ No newline at end of file
+8efa2ac8877cc4d116d3625738612cdba7e474a4
\ No newline at end of file
diff --git a/eglib/configure.ac b/eglib/configure.ac
index fab5724769..1ff6c42ff2 100644
--- a/eglib/configure.ac
+++ b/eglib/configure.ac
@@ -179,7 +179,7 @@ if test "x$have_iso_varargs" = "xyes"; then
fi
AC_SUBST(G_HAVE_ISO_VARARGS)
-AC_CHECK_HEADERS(getopt.h sys/time.h sys/wait.h pwd.h langinfo.h iconv.h localcharset.h sys/types.h)
+AC_CHECK_HEADERS(getopt.h sys/select.h sys/time.h sys/wait.h pwd.h langinfo.h iconv.h localcharset.h sys/types.h)
AC_CHECK_HEADER(alloca.h, [HAVE_ALLOCA_H=1], [HAVE_ALLOCA_H=0])
AC_SUBST(HAVE_ALLOCA_H)
@@ -235,6 +235,12 @@ AC_ARG_WITH(crosspkgdir, [ --with-crosspkgdir=/path/to/pkg-config/dir Chan
fi
)
+AC_ARG_ENABLE(werror, [ --enable-werror Pass -Werror to the C compiler], werror_flag=$enableval, werror_flag=no)
+if test x$werror_flag = xyes; then
+ WERROR_CFLAGS="-Werror"
+fi
+AC_SUBST([WERROR_CFLAGS])
+
AC_SUBST(GPOINTER_TO_INT)
AC_SUBST(GPOINTER_TO_UINT)
AC_SUBST(GINT_TO_POINTER)
diff --git a/eglib/m4/Makefile.in b/eglib/m4/Makefile.in
index 5fd63e0d80..42f6211d8c 100644
--- a/eglib/m4/Makefile.in
+++ b/eglib/m4/Makefile.in
@@ -205,6 +205,7 @@ SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
+WERROR_CFLAGS = @WERROR_CFLAGS@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
diff --git a/eglib/src/Makefile.am b/eglib/src/Makefile.am
index 0d0e90354e..70d519ea22 100644
--- a/eglib/src/Makefile.am
+++ b/eglib/src/Makefile.am
@@ -1,5 +1,7 @@
noinst_LTLIBRARIES = libeglib.la libeglib-static.la
+AM_CFLAGS = $(WERROR_CFLAGS)
+
win_files = \
eglib-config.hw \
gdate-win32.c gdir-win32.c gfile-win32.c gmisc-win32.c \
@@ -30,6 +32,7 @@ libeglib_la_SOURCES = \
garray.c \
gbytearray.c \
gerror.c \
+ vasprintf.h \
ghashtable.c \
giconv.c \
gmem.c \
diff --git a/eglib/src/Makefile.in.REMOVED.git-id b/eglib/src/Makefile.in.REMOVED.git-id
index 91ee94333a..28469772a0 100644
--- a/eglib/src/Makefile.in.REMOVED.git-id
+++ b/eglib/src/Makefile.in.REMOVED.git-id
@@ -1 +1 @@
-46a89f9f9808c4792e331b8cbb738a6d8db1c519
\ No newline at end of file
+155511dfa6f6ef3805f7a5fad5fe5c9a6dbe2a8b
\ No newline at end of file
diff --git a/eglib/src/gerror.c b/eglib/src/gerror.c
index 790c388c7a..2ec089c995 100644
--- a/eglib/src/gerror.c
+++ b/eglib/src/gerror.c
@@ -30,6 +30,8 @@
#include
#include
+#include "vasprintf.h"
+
GError *
g_error_new (gpointer domain, gint code, const char *format, ...)
{
diff --git a/eglib/src/glib.h b/eglib/src/glib.h
index 6d6dadff44..7cb8e6179c 100644
--- a/eglib/src/glib.h
+++ b/eglib/src/glib.h
@@ -49,12 +49,6 @@
G_BEGIN_DECLS
-#ifdef G_OS_WIN32
-/* MSC and Cross-compilatin will use this */
-int vasprintf (char **strp, const char *fmt, va_list ap);
-#endif
-
-
/*
* Basic data types
*/
@@ -727,8 +721,16 @@ GUnicodeBreakType g_unichar_break_type (gunichar c);
#define G_UNLIKELY(x) (x)
#endif
+#if defined(_MSC_VER)
+#define eg_unreachable() __assume(0)
+#elif defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4 && (__GNUC_MINOR__ >= 5)))
+#define eg_unreachable() __builtin_unreachable()
+#else
+#define eg_unreachable()
+#endif
+
#define g_assert(x) G_STMT_START { if (G_UNLIKELY (!(x))) g_assertion_message ("* Assertion at %s:%d, condition `%s' not met\n", __FILE__, __LINE__, #x); } G_STMT_END
-#define g_assert_not_reached() G_STMT_START { g_assertion_message ("* Assertion: should not be reached at %s:%d\n", __FILE__, __LINE__); } G_STMT_END
+#define g_assert_not_reached() G_STMT_START { g_assertion_message ("* Assertion: should not be reached at %s:%d\n", __FILE__, __LINE__); eg_unreachable(); } G_STMT_END
/*
* Unicode conversion
@@ -1008,19 +1010,6 @@ glong g_utf8_pointer_to_offset (const gchar *str, const gchar *pos);
#define G_PRIORITY_DEFAULT 0
#define G_PRIORITY_DEFAULT_IDLE 200
-/*
- * Empty thread functions, not used by eglib
- */
-#define g_thread_supported() TRUE
-#define g_thread_init(x) G_STMT_START { if (x != NULL) { g_error ("No vtable supported in g_thread_init"); } } G_STMT_END
-
-#define G_LOCK_DEFINE(name) int name;
-#define G_LOCK_DEFINE_STATIC(name) static int name;
-#define G_LOCK_EXTERN(name)
-#define G_LOCK(name)
-#define G_TRYLOCK(name)
-#define G_UNLOCK(name)
-
#define GUINT16_SWAP_LE_BE_CONSTANT(x) ((((guint16) x) >> 8) | ((((guint16) x) << 8)))
#define GUINT16_SWAP_LE_BE(x) ((guint16) (((guint16) x) >> 8) | ((((guint16)(x)) & 0xff) << 8))
diff --git a/eglib/src/goutput.c b/eglib/src/goutput.c
index aff9f460c5..73ef1f383d 100644
--- a/eglib/src/goutput.c
+++ b/eglib/src/goutput.c
@@ -31,6 +31,8 @@
#include
#include
+#include "vasprintf.h"
+
/* The current fatal levels, error is always fatal */
static GLogLevelFlags fatal = G_LOG_LEVEL_ERROR;
diff --git a/eglib/src/gspawn.c b/eglib/src/gspawn.c
index 4f4e5bef53..836e6f2aa9 100644
--- a/eglib/src/gspawn.c
+++ b/eglib/src/gspawn.c
@@ -41,6 +41,10 @@
#include
#endif
+#ifdef HAVE_SYS_SELECT_H
+#include
+#endif
+
#ifdef HAVE_SYS_TIME_H
#include
#endif
diff --git a/eglib/src/gstr.c b/eglib/src/gstr.c
index 335ccff936..3e976c5a2e 100644
--- a/eglib/src/gstr.c
+++ b/eglib/src/gstr.c
@@ -32,6 +32,8 @@
#include
#include
+#include "vasprintf.h"
+
/* This is not a macro, because I dont want to put _GNU_SOURCE in the glib.h header */
gchar *
g_strndup (const gchar *str, gsize n)
diff --git a/eglib/src/sort.frag.h b/eglib/src/sort.frag.h
index 2cf5a9ba1f..6dc1950ae4 100644
--- a/eglib/src/sort.frag.h
+++ b/eglib/src/sort.frag.h
@@ -88,12 +88,24 @@ merge_lists (list_node *first, list_node *second, GCompareFunc func)
static inline list_node *
sweep_up (struct sort_info *si, list_node *list, int upto)
{
+#if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 406)
+ /*
+ * GCC incorrectly thinks we're writing below si->ranks array bounds.
+ */
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Warray-bounds"
+#endif
+
int i;
for (i = si->min_rank; i < upto; ++i) {
list = merge_lists (si->ranks [i], list, si->func);
si->ranks [i] = NULL;
}
return list;
+
+#if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 406)
+#pragma GCC diagnostic pop
+#endif
}
/*
@@ -124,6 +136,14 @@ sweep_up (struct sort_info *si, list_node *list, int upto)
static inline void
insert_list (struct sort_info *si, list_node* list, int rank)
{
+#if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 406)
+ /*
+ * GCC incorrectly thinks we're writing below si->ranks array bounds.
+ */
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Warray-bounds"
+#endif
+
int i;
if (rank > si->n_ranks) {
@@ -149,6 +169,10 @@ insert_list (struct sort_info *si, list_node* list, int rank)
si->n_ranks = i + 1;
si->min_rank = i;
si->ranks [i] = list;
+
+#if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 406)
+#pragma GCC diagnostic pop
+#endif
}
#undef stringify2
diff --git a/eglib/src/vasprintf.h b/eglib/src/vasprintf.h
new file mode 100644
index 0000000000..3d294541a5
--- /dev/null
+++ b/eglib/src/vasprintf.h
@@ -0,0 +1,11 @@
+#ifndef __VASPRINTF_H
+#define __VASPRINTF_H
+
+#include
+#include
+
+#ifndef HAVE_VASPRINTF
+int vasprintf(char **ret, const char *fmt, va_list ap);
+#endif
+
+#endif /* __VASPRINTF_H */
diff --git a/eglib/test/Makefile.in b/eglib/test/Makefile.in
index 9d22bd654f..99c1c07cd1 100644
--- a/eglib/test/Makefile.in
+++ b/eglib/test/Makefile.in
@@ -267,6 +267,7 @@ SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
+WERROR_CFLAGS = @WERROR_CFLAGS@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
diff --git a/eglib/test/file.c b/eglib/test/file.c
index 411c945296..19276c990c 100644
--- a/eglib/test/file.c
+++ b/eglib/test/file.c
@@ -115,7 +115,7 @@ test_file ()
#ifndef G_OS_WIN32 /* FIXME */
gchar *sympath;
- gint ignored;
+ gint ignored G_GNUC_UNUSED;
#endif
res = g_file_test (NULL, 0);
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Aga.Controls.dll.REMOVED.git-id b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Aga.Controls.dll.REMOVED.git-id
deleted file mode 100644
index 4ada5a22e2..0000000000
--- a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Aga.Controls.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-0fc198aa785b43ebc2084334bc85336072e00bfe
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Ambience.Server.exe b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Ambience.Server.exe
deleted file mode 100644
index d625e473a8..0000000000
Binary files a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Ambience.Server.exe and /dev/null differ
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Ambience.UI.dll b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Ambience.UI.dll
deleted file mode 100644
index 63b0328189..0000000000
Binary files a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Ambience.UI.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Ambience.dll.REMOVED.git-id b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Ambience.dll.REMOVED.git-id
deleted file mode 100644
index 2d02bafabd..0000000000
--- a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Ambience.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-ba0226882e0c101eda00edc3c2592a4cfdc741f8
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Common.Splash.dll b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Common.Splash.dll
deleted file mode 100644
index 4d00dfba04..0000000000
Binary files a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Common.Splash.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.ControlPanel.exe b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.ControlPanel.exe
deleted file mode 100644
index c32be44b81..0000000000
Binary files a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.ControlPanel.exe and /dev/null differ
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Copy.exe.REMOVED.git-id b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Copy.exe.REMOVED.git-id
deleted file mode 100644
index 0921d4af6a..0000000000
--- a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Copy.exe.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-0a54a97411a94bf84325a7eeecc6d68133be7b6f
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Echo.exe.REMOVED.git-id b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Echo.exe.REMOVED.git-id
deleted file mode 100644
index 1da53b354a..0000000000
--- a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Echo.exe.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-77d563f7a5afa344ab5bcfb0e57fb31f808ae111
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Host.Elevated.exe b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Host.Elevated.exe
deleted file mode 100644
index a51b8fe2a2..0000000000
Binary files a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Host.Elevated.exe and /dev/null differ
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Host.Elevated.x86.exe b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Host.Elevated.x86.exe
deleted file mode 100644
index 812e9b5d02..0000000000
Binary files a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Host.Elevated.x86.exe and /dev/null differ
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Host.exe b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Host.exe
deleted file mode 100644
index 3eb7f500ba..0000000000
Binary files a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Host.exe and /dev/null differ
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Host.x86.exe b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Host.x86.exe
deleted file mode 100644
index 1963670721..0000000000
Binary files a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Host.x86.exe and /dev/null differ
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Icarus.XmlSerializers.dll b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Icarus.XmlSerializers.dll
deleted file mode 100644
index c6a342e69e..0000000000
Binary files a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Icarus.XmlSerializers.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Icarus.exe.REMOVED.git-id b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Icarus.exe.REMOVED.git-id
deleted file mode 100644
index f136eb214d..0000000000
--- a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Icarus.exe.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-6f431b8505b8348131ed37de7a9aa343dab2a78e
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.MSBuildTasks.dll b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.MSBuildTasks.dll
deleted file mode 100644
index 063f01c9c5..0000000000
Binary files a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.MSBuildTasks.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Navigator.exe.REMOVED.git-id b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Navigator.exe.REMOVED.git-id
deleted file mode 100644
index 1cec578705..0000000000
--- a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Navigator.exe.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-df4dffecb0b55c9e0049c912026f8c24cc5b7366
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.PowerShellCommands.dll b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.PowerShellCommands.dll
deleted file mode 100644
index 9572ad4731..0000000000
Binary files a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.PowerShellCommands.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Reports.dll b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Reports.dll
deleted file mode 100644
index ebc028bc89..0000000000
Binary files a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Reports.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.UI.dll.REMOVED.git-id b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.UI.dll.REMOVED.git-id
deleted file mode 100644
index 74487f0ee1..0000000000
--- a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.UI.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-4f186ae17e811b7bd6986fa77ffc0eb45ae77a13
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Utility.exe b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Utility.exe
deleted file mode 100644
index 64941c894d..0000000000
Binary files a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Utility.exe and /dev/null differ
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.VisualStudio.Interop.dll b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.VisualStudio.Interop.dll
deleted file mode 100644
index fdf77f2921..0000000000
Binary files a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.VisualStudio.Interop.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.XmlSerializers.dll.REMOVED.git-id b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.XmlSerializers.dll.REMOVED.git-id
deleted file mode 100644
index 03a2e7ac97..0000000000
--- a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.XmlSerializers.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-3086a94e2bc35d3497101cf5056f1152cc913e14
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.dll.REMOVED.git-id b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.dll.REMOVED.git-id
deleted file mode 100644
index 6326c043de..0000000000
--- a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-1d605ae71204d982dca8135529b2fc9c90019391
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio35.dll b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio35.dll
deleted file mode 100644
index 55d026f515..0000000000
Binary files a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio35.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio40.dll b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio40.dll
deleted file mode 100644
index cf3aea2730..0000000000
Binary files a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio40.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/ICSharpCode.TextEditor.dll.REMOVED.git-id b/external/Lucene.Net/lib/Gallio.3.2.750/tools/ICSharpCode.TextEditor.dll.REMOVED.git-id
deleted file mode 100644
index dbf00bb0b8..0000000000
--- a/external/Lucene.Net/lib/Gallio.3.2.750/tools/ICSharpCode.TextEditor.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-47aff41a048919977a977658bcd0c110a0f87632
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/MbUnit.Compatibility.dll b/external/Lucene.Net/lib/Gallio.3.2.750/tools/MbUnit.Compatibility.dll
deleted file mode 100644
index 39ae2f7c37..0000000000
Binary files a/external/Lucene.Net/lib/Gallio.3.2.750/tools/MbUnit.Compatibility.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/MbUnit.dll.REMOVED.git-id b/external/Lucene.Net/lib/Gallio.3.2.750/tools/MbUnit.dll.REMOVED.git-id
deleted file mode 100644
index 6a6b6c9819..0000000000
--- a/external/Lucene.Net/lib/Gallio.3.2.750/tools/MbUnit.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-09a5b5c0474cced4d4a2181078cbd1e4707f0ae9
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/MbUnit35.dll b/external/Lucene.Net/lib/Gallio.3.2.750/tools/MbUnit35.dll
deleted file mode 100644
index dfbaec1c24..0000000000
Binary files a/external/Lucene.Net/lib/Gallio.3.2.750/tools/MbUnit35.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/MbUnit40.dll b/external/Lucene.Net/lib/Gallio.3.2.750/tools/MbUnit40.dll
deleted file mode 100644
index 816cee00a6..0000000000
Binary files a/external/Lucene.Net/lib/Gallio.3.2.750/tools/MbUnit40.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/NCover/Gallio.NCoverIntegration.dll b/external/Lucene.Net/lib/Gallio.3.2.750/tools/NCover/Gallio.NCoverIntegration.dll
deleted file mode 100644
index a42aa4706f..0000000000
Binary files a/external/Lucene.Net/lib/Gallio.3.2.750/tools/NCover/Gallio.NCoverIntegration.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/NHamcrest.dll b/external/Lucene.Net/lib/Gallio.3.2.750/tools/NHamcrest.dll
deleted file mode 100644
index f6f4d02f81..0000000000
Binary files a/external/Lucene.Net/lib/Gallio.3.2.750/tools/NHamcrest.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/Gallio.NUnitAdapterLatest.dll b/external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/Gallio.NUnitAdapterLatest.dll
deleted file mode 100644
index 81e75673f9..0000000000
Binary files a/external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/Gallio.NUnitAdapterLatest.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/nunit.core.dll.REMOVED.git-id b/external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/nunit.core.dll.REMOVED.git-id
deleted file mode 100644
index a5c18c9373..0000000000
--- a/external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/nunit.core.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-5e9fcc037e7bad10a1afcaa0ce5a179d135b4413
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/nunit.core.interfaces.dll b/external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/nunit.core.interfaces.dll
deleted file mode 100644
index 3152dd2f08..0000000000
Binary files a/external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/nunit.core.interfaces.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/nunit.framework.dll.REMOVED.git-id b/external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/nunit.framework.dll.REMOVED.git-id
deleted file mode 100644
index 0705485350..0000000000
--- a/external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/nunit.framework.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-875e0984208d52e5c96a409b52996547198af17a
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/nunit.mocks.dll b/external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/nunit.mocks.dll
deleted file mode 100644
index 97b88e7ac3..0000000000
Binary files a/external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/nunit.mocks.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/nunit.util.dll.REMOVED.git-id b/external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/nunit.util.dll.REMOVED.git-id
deleted file mode 100644
index a72921edd8..0000000000
--- a/external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/nunit.util.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-b31beef4192f37a66e51642a372cd7cfacf60f17
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/TDNet/Gallio.TDNetRunner.UI.dll b/external/Lucene.Net/lib/Gallio.3.2.750/tools/TDNet/Gallio.TDNetRunner.UI.dll
deleted file mode 100644
index 242d55b212..0000000000
Binary files a/external/Lucene.Net/lib/Gallio.3.2.750/tools/TDNet/Gallio.TDNetRunner.UI.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/TDNet/Gallio.TDNetRunner.dll b/external/Lucene.Net/lib/Gallio.3.2.750/tools/TDNet/Gallio.TDNetRunner.dll
deleted file mode 100644
index bdcfca23e8..0000000000
Binary files a/external/Lucene.Net/lib/Gallio.3.2.750/tools/TDNet/Gallio.TDNetRunner.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/Gallio.VisualStudio.Shell.dll b/external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/Gallio.VisualStudio.Shell.dll
deleted file mode 100644
index 8849f609ff..0000000000
Binary files a/external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/Gallio.VisualStudio.Shell.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/v10.0/Gallio.VisualStudio.Shell100.dll.REMOVED.git-id b/external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/v10.0/Gallio.VisualStudio.Shell100.dll.REMOVED.git-id
deleted file mode 100644
index f43a0280eb..0000000000
--- a/external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/v10.0/Gallio.VisualStudio.Shell100.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-233ab1af3ce0f3e446ff1052a91faf4902ea7200
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/v10.0/Gallio.VisualStudio.Tip100.Proxy.dll.REMOVED.git-id b/external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/v10.0/Gallio.VisualStudio.Tip100.Proxy.dll.REMOVED.git-id
deleted file mode 100644
index 37edf88b33..0000000000
--- a/external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/v10.0/Gallio.VisualStudio.Tip100.Proxy.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-a95bc11a9e33e89c280fe5bd69814db68ad2cbbd
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/v10.0/Gallio.VisualStudio.Tip100.dll b/external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/v10.0/Gallio.VisualStudio.Tip100.dll
deleted file mode 100644
index 5bea6b4b57..0000000000
Binary files a/external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/v10.0/Gallio.VisualStudio.Tip100.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/v9.0/Gallio.VisualStudio.Shell90.dll.REMOVED.git-id b/external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/v9.0/Gallio.VisualStudio.Shell90.dll.REMOVED.git-id
deleted file mode 100644
index a3603b0021..0000000000
--- a/external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/v9.0/Gallio.VisualStudio.Shell90.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-779d237c0bd808b0a3f0772f7782e02dde67b717
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/v9.0/Gallio.VisualStudio.Tip90.Proxy.dll.REMOVED.git-id b/external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/v9.0/Gallio.VisualStudio.Tip90.Proxy.dll.REMOVED.git-id
deleted file mode 100644
index 513baaada3..0000000000
--- a/external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/v9.0/Gallio.VisualStudio.Tip90.Proxy.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-7a60a3629461cf02494cecaed937b5b1976c6fb4
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/v9.0/Gallio.VisualStudio.Tip90.dll b/external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/v9.0/Gallio.VisualStudio.Tip90.dll
deleted file mode 100644
index a575b919ec..0000000000
Binary files a/external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/v9.0/Gallio.VisualStudio.Tip90.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/WeifenLuo.WinFormsUI.Docking.dll.REMOVED.git-id b/external/Lucene.Net/lib/Gallio.3.2.750/tools/WeifenLuo.WinFormsUI.Docking.dll.REMOVED.git-id
deleted file mode 100644
index ed331c3f02..0000000000
--- a/external/Lucene.Net/lib/Gallio.3.2.750/tools/WeifenLuo.WinFormsUI.Docking.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-dd42cc64c5a6cffaee63d6fa9b699ec4847c61cb
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/ICSharpCode/SharpZipLib/0.85/ICSharpCode.SharpZipLib.dll.REMOVED.git-id b/external/Lucene.Net/lib/ICSharpCode/SharpZipLib/0.85/ICSharpCode.SharpZipLib.dll.REMOVED.git-id
deleted file mode 100644
index 1fe5123324..0000000000
--- a/external/Lucene.Net/lib/ICSharpCode/SharpZipLib/0.85/ICSharpCode.SharpZipLib.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-e829ebf4baa5601ed650a56b821e266ef0c0d9cc
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/framework/nunit.framework.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/framework/nunit.framework.dll.REMOVED.git-id
deleted file mode 100644
index 16fbaaf046..0000000000
--- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/framework/nunit.framework.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-105213c67c9ef3d0aa0997306d0c941b293029e2
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/framework/nunit.mocks.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/framework/nunit.mocks.dll
deleted file mode 100644
index 2250c0c1e7..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/framework/nunit.mocks.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/framework/pnunit.framework.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/framework/pnunit.framework.dll
deleted file mode 100644
index 5b9a2c06b2..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/framework/pnunit.framework.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/fit.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/fit.dll
deleted file mode 100644
index 40bbef0e29..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/fit.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/log4net.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/log4net.dll.REMOVED.git-id
deleted file mode 100644
index d795cca736..0000000000
--- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/log4net.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-20a2e1c47dea6ee52dc38cfd4eee0cfde7894faa
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/nunit-console-runner.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/nunit-console-runner.dll
deleted file mode 100644
index 5daee5a876..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/nunit-console-runner.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/nunit.core.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/nunit.core.dll.REMOVED.git-id
deleted file mode 100644
index be98988bfc..0000000000
--- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/nunit.core.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-5eb61245eb8e23d7c68480d77573ac59e8c82045
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/nunit.core.interfaces.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/nunit.core.interfaces.dll
deleted file mode 100644
index eb5c2a1685..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/nunit.core.interfaces.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/nunit.fixtures.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/nunit.fixtures.dll
deleted file mode 100644
index e5d3cec04d..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/nunit.fixtures.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/nunit.util.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/nunit.util.dll.REMOVED.git-id
deleted file mode 100644
index 103113fc5d..0000000000
--- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/nunit.util.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-9f4bace96a58a56cdd68e8c19335f397710c3da5
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/nunit-agent.exe b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/nunit-agent.exe
deleted file mode 100644
index 3ba23ea14e..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/nunit-agent.exe and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/nunit-console.exe b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/nunit-console.exe
deleted file mode 100644
index c5492b070d..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/nunit-console.exe and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/nunit.framework.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/nunit.framework.dll.REMOVED.git-id
deleted file mode 100644
index 16fbaaf046..0000000000
--- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/nunit.framework.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-105213c67c9ef3d0aa0997306d0c941b293029e2
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/pnunit-agent.exe b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/pnunit-agent.exe
deleted file mode 100644
index 91ba0af762..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/pnunit-agent.exe and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/pnunit-launcher.exe b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/pnunit-launcher.exe
deleted file mode 100644
index cbc361c6b7..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/pnunit-launcher.exe and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/pnunit.framework.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/pnunit.framework.dll
deleted file mode 100644
index 5b9a2c06b2..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/pnunit.framework.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/pnunit.tests.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/pnunit.tests.dll
deleted file mode 100644
index 9d482ce446..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/pnunit.tests.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/runFile.exe b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/runFile.exe
deleted file mode 100644
index a794458669..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/runFile.exe and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/loadtest-assembly.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/loadtest-assembly.dll
deleted file mode 100644
index 3c33dd63bc..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/loadtest-assembly.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/mock-assembly.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/mock-assembly.dll
deleted file mode 100644
index bfb3b26990..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/mock-assembly.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nonamespace-assembly.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nonamespace-assembly.dll
deleted file mode 100644
index 4d11b609a8..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nonamespace-assembly.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit-console.tests.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit-console.tests.dll
deleted file mode 100644
index 4d9c49b4b6..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit-console.tests.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit.core.tests.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit.core.tests.dll.REMOVED.git-id
deleted file mode 100644
index d9432eb4a7..0000000000
--- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit.core.tests.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-a91217d2254ccb43e4eeb949cc41cb0098fa0187
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit.fixtures.tests.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit.fixtures.tests.dll
deleted file mode 100644
index fc624de403..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit.fixtures.tests.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit.framework.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit.framework.dll.REMOVED.git-id
deleted file mode 100644
index 16fbaaf046..0000000000
--- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit.framework.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-105213c67c9ef3d0aa0997306d0c941b293029e2
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit.framework.tests.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit.framework.tests.dll.REMOVED.git-id
deleted file mode 100644
index b1a468568f..0000000000
--- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit.framework.tests.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-e6b8be7ac3375d79a19635e50a79211fe356c1fc
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit.mocks.tests.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit.mocks.tests.dll
deleted file mode 100644
index 0771c38166..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit.mocks.tests.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit.util.tests.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit.util.tests.dll.REMOVED.git-id
deleted file mode 100644
index 0c3b5482bb..0000000000
--- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit.util.tests.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-a816c2a6c2c4f616831b6635036b8bfac79966ce
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/test-assembly.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/test-assembly.dll
deleted file mode 100644
index c61e0c4f05..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/test-assembly.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/test-utilities.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/test-utilities.dll
deleted file mode 100644
index 697418b4be..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/test-utilities.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/timing-tests.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/timing-tests.dll
deleted file mode 100644
index bf1ae70e0b..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/timing-tests.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/framework/nunit.framework.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/framework/nunit.framework.dll.REMOVED.git-id
deleted file mode 100644
index 0705485350..0000000000
--- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/framework/nunit.framework.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-875e0984208d52e5c96a409b52996547198af17a
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/framework/nunit.mocks.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/framework/nunit.mocks.dll
deleted file mode 100644
index 97b88e7ac3..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/framework/nunit.mocks.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/framework/pnunit.framework.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/framework/pnunit.framework.dll
deleted file mode 100644
index ca9b5cb472..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/framework/pnunit.framework.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/fit.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/fit.dll
deleted file mode 100644
index 40bbef0e29..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/fit.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/log4net.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/log4net.dll.REMOVED.git-id
deleted file mode 100644
index d795cca736..0000000000
--- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/log4net.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-20a2e1c47dea6ee52dc38cfd4eee0cfde7894faa
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit-console-runner.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit-console-runner.dll
deleted file mode 100644
index a18299ede1..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit-console-runner.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit-gui-runner.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit-gui-runner.dll.REMOVED.git-id
deleted file mode 100644
index 7bc1d63aba..0000000000
--- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit-gui-runner.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-ec364fa979b053139b43ced7bbee75879607a99a
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.core.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.core.dll.REMOVED.git-id
deleted file mode 100644
index a5c18c9373..0000000000
--- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.core.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-5e9fcc037e7bad10a1afcaa0ce5a179d135b4413
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.core.interfaces.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.core.interfaces.dll
deleted file mode 100644
index 3152dd2f08..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.core.interfaces.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.fixtures.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.fixtures.dll
deleted file mode 100644
index 0b19937293..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.fixtures.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.uiexception.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.uiexception.dll
deleted file mode 100644
index 66b4b95491..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.uiexception.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.uikit.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.uikit.dll.REMOVED.git-id
deleted file mode 100644
index eadcdc45ab..0000000000
--- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.uikit.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-adc5ead69d0593226d80b7220e65d3d435133a74
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.util.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.util.dll.REMOVED.git-id
deleted file mode 100644
index a72921edd8..0000000000
--- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.util.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-b31beef4192f37a66e51642a372cd7cfacf60f17
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit-agent-x86.exe b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit-agent-x86.exe
deleted file mode 100644
index 00b331cb29..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit-agent-x86.exe and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit-agent.exe b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit-agent.exe
deleted file mode 100644
index 8729148a8f..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit-agent.exe and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit-console-x86.exe b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit-console-x86.exe
deleted file mode 100644
index 48f726ff77..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit-console-x86.exe and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit-console.exe b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit-console.exe
deleted file mode 100644
index 74f3dff575..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit-console.exe and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit-x86.exe b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit-x86.exe
deleted file mode 100644
index f7913681e7..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit-x86.exe and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit.exe b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit.exe
deleted file mode 100644
index 7718d8d356..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit.exe and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit.framework.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit.framework.dll.REMOVED.git-id
deleted file mode 100644
index 0705485350..0000000000
--- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit.framework.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-875e0984208d52e5c96a409b52996547198af17a
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/pnunit-agent.exe b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/pnunit-agent.exe
deleted file mode 100644
index 31a03d80f6..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/pnunit-agent.exe and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/pnunit-launcher.exe b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/pnunit-launcher.exe
deleted file mode 100644
index e4c4f092a8..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/pnunit-launcher.exe and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/pnunit.framework.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/pnunit.framework.dll
deleted file mode 100644
index ca9b5cb472..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/pnunit.framework.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/pnunit.tests.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/pnunit.tests.dll
deleted file mode 100644
index e3985d65a8..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/pnunit.tests.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/runFile.exe b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/runFile.exe
deleted file mode 100644
index a794458669..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/runFile.exe and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/loadtest-assembly.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/loadtest-assembly.dll
deleted file mode 100644
index 157cc43aaf..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/loadtest-assembly.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/mock-assembly.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/mock-assembly.dll
deleted file mode 100644
index 4a76850793..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/mock-assembly.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nonamespace-assembly.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nonamespace-assembly.dll
deleted file mode 100644
index b12afd4a5d..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nonamespace-assembly.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit-console.tests.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit-console.tests.dll
deleted file mode 100644
index 72d86ac27d..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit-console.tests.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit-gui.tests.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit-gui.tests.dll
deleted file mode 100644
index 5be825329c..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit-gui.tests.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.core.tests.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.core.tests.dll.REMOVED.git-id
deleted file mode 100644
index 4379b4cd64..0000000000
--- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.core.tests.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-897b061afc4d913141127d4c94954810d16e1a89
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.fixtures.tests.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.fixtures.tests.dll
deleted file mode 100644
index 22ba068373..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.fixtures.tests.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.framework.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.framework.dll.REMOVED.git-id
deleted file mode 100644
index 0705485350..0000000000
--- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.framework.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-875e0984208d52e5c96a409b52996547198af17a
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.framework.tests.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.framework.tests.dll.REMOVED.git-id
deleted file mode 100644
index b15ad7631c..0000000000
--- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.framework.tests.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-28dc3ab581edb6a85d032f3a7138be5565fbd817
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.mocks.tests.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.mocks.tests.dll
deleted file mode 100644
index 09a0b17a74..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.mocks.tests.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.uiexception.tests.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.uiexception.tests.dll.REMOVED.git-id
deleted file mode 100644
index e9e44f0633..0000000000
--- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.uiexception.tests.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-43863c072f708c1d0855fb17541460b5d64a4911
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.uikit.tests.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.uikit.tests.dll
deleted file mode 100644
index 0abc2a7ba7..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.uikit.tests.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.util.tests.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.util.tests.dll.REMOVED.git-id
deleted file mode 100644
index 558bc4799d..0000000000
--- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.util.tests.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-6e9e90a5158e5394155c1197322765b8e30b73a5
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/test-assembly.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/test-assembly.dll
deleted file mode 100644
index 43042414fb..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/test-assembly.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/test-utilities.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/test-utilities.dll
deleted file mode 100644
index 553750b492..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/test-utilities.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/timing-tests.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/timing-tests.dll
deleted file mode 100644
index fc2711bb7e..0000000000
Binary files a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/timing-tests.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/Nuget/NuGet.exe.REMOVED.git-id b/external/Lucene.Net/lib/Nuget/NuGet.exe.REMOVED.git-id
deleted file mode 100644
index bf8f38933b..0000000000
--- a/external/Lucene.Net/lib/Nuget/NuGet.exe.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-c3960af621dceffd2f8a38b0026c650fddc758b2
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/Spatial4n/NET35/GeoAPI.dll b/external/Lucene.Net/lib/Spatial4n/NET35/GeoAPI.dll
deleted file mode 100644
index dabb246770..0000000000
Binary files a/external/Lucene.Net/lib/Spatial4n/NET35/GeoAPI.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/Spatial4n/NET35/NetTopologySuite.dll.REMOVED.git-id b/external/Lucene.Net/lib/Spatial4n/NET35/NetTopologySuite.dll.REMOVED.git-id
deleted file mode 100644
index 175e0b16ba..0000000000
--- a/external/Lucene.Net/lib/Spatial4n/NET35/NetTopologySuite.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-a2201a8faae23c259207d381297905908f028781
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/Spatial4n/NET35/PowerCollections.dll.REMOVED.git-id b/external/Lucene.Net/lib/Spatial4n/NET35/PowerCollections.dll.REMOVED.git-id
deleted file mode 100644
index b3bab4208b..0000000000
--- a/external/Lucene.Net/lib/Spatial4n/NET35/PowerCollections.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-d62817b0acb1b5b24af25975168b27bcddfadf73
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/Spatial4n/NET35/Spatial4n.Core.NTS.dll b/external/Lucene.Net/lib/Spatial4n/NET35/Spatial4n.Core.NTS.dll
deleted file mode 100644
index 4f750e5c9f..0000000000
Binary files a/external/Lucene.Net/lib/Spatial4n/NET35/Spatial4n.Core.NTS.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/Spatial4n/NET35/Spatial4n.Core.dll b/external/Lucene.Net/lib/Spatial4n/NET35/Spatial4n.Core.dll
deleted file mode 100644
index a0761b73b7..0000000000
Binary files a/external/Lucene.Net/lib/Spatial4n/NET35/Spatial4n.Core.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/Spatial4n/NET40/GeoAPI.dll b/external/Lucene.Net/lib/Spatial4n/NET40/GeoAPI.dll
deleted file mode 100644
index dabb246770..0000000000
Binary files a/external/Lucene.Net/lib/Spatial4n/NET40/GeoAPI.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/Spatial4n/NET40/NetTopologySuite.dll.REMOVED.git-id b/external/Lucene.Net/lib/Spatial4n/NET40/NetTopologySuite.dll.REMOVED.git-id
deleted file mode 100644
index 175e0b16ba..0000000000
--- a/external/Lucene.Net/lib/Spatial4n/NET40/NetTopologySuite.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-a2201a8faae23c259207d381297905908f028781
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/Spatial4n/NET40/PowerCollections.dll.REMOVED.git-id b/external/Lucene.Net/lib/Spatial4n/NET40/PowerCollections.dll.REMOVED.git-id
deleted file mode 100644
index b3bab4208b..0000000000
--- a/external/Lucene.Net/lib/Spatial4n/NET40/PowerCollections.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-d62817b0acb1b5b24af25975168b27bcddfadf73
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/Spatial4n/NET40/Spatial4n.Core.NTS.dll b/external/Lucene.Net/lib/Spatial4n/NET40/Spatial4n.Core.NTS.dll
deleted file mode 100644
index 1986e16fec..0000000000
Binary files a/external/Lucene.Net/lib/Spatial4n/NET40/Spatial4n.Core.NTS.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/Spatial4n/NET40/Spatial4n.Core.dll b/external/Lucene.Net/lib/Spatial4n/NET40/Spatial4n.Core.dll
deleted file mode 100644
index 7d35027f68..0000000000
Binary files a/external/Lucene.Net/lib/Spatial4n/NET40/Spatial4n.Core.dll and /dev/null differ
diff --git a/external/Lucene.Net/lib/StyleCop.4.5/StyleCop.CSharp.Rules.dll.REMOVED.git-id b/external/Lucene.Net/lib/StyleCop.4.5/StyleCop.CSharp.Rules.dll.REMOVED.git-id
deleted file mode 100644
index 6fa927f102..0000000000
--- a/external/Lucene.Net/lib/StyleCop.4.5/StyleCop.CSharp.Rules.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-deb1998f568c93a8ed5b6433d018bc9d467a11d0
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/StyleCop.4.5/StyleCop.CSharp.dll.REMOVED.git-id b/external/Lucene.Net/lib/StyleCop.4.5/StyleCop.CSharp.dll.REMOVED.git-id
deleted file mode 100644
index a6f8b69771..0000000000
--- a/external/Lucene.Net/lib/StyleCop.4.5/StyleCop.CSharp.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-576423a1711a48a6269b60c9e3ccfcef6b28ac4f
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/StyleCop.4.5/StyleCop.VSPackage.dll.REMOVED.git-id b/external/Lucene.Net/lib/StyleCop.4.5/StyleCop.VSPackage.dll.REMOVED.git-id
deleted file mode 100644
index 58e1a12f0c..0000000000
--- a/external/Lucene.Net/lib/StyleCop.4.5/StyleCop.VSPackage.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-02dcb458e4d63c1792f894549b3dbf2bd4120512
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/StyleCop.4.5/StyleCop.dll.REMOVED.git-id b/external/Lucene.Net/lib/StyleCop.4.5/StyleCop.dll.REMOVED.git-id
deleted file mode 100644
index 1ddf34339f..0000000000
--- a/external/Lucene.Net/lib/StyleCop.4.5/StyleCop.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-c8b32a2d467bcb875f46921ffd04e3b5470282ee
\ No newline at end of file
diff --git a/external/Lucene.Net/lib/StyleCop.4.5/StyleCopSettingsEditor.exe.REMOVED.git-id b/external/Lucene.Net/lib/StyleCop.4.5/StyleCopSettingsEditor.exe.REMOVED.git-id
deleted file mode 100644
index ff59517c25..0000000000
--- a/external/Lucene.Net/lib/StyleCop.4.5/StyleCopSettingsEditor.exe.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-c47ed737adac222db50924ba01cfa2f1c75d4b38
\ No newline at end of file
diff --git a/external/Newtonsoft.Json/Src/Lib/NUnit/Compact/NUnitLite.dll b/external/Newtonsoft.Json/Src/Lib/NUnit/Compact/NUnitLite.dll
deleted file mode 100644
index 2bf15332be..0000000000
Binary files a/external/Newtonsoft.Json/Src/Lib/NUnit/Compact/NUnitLite.dll and /dev/null differ
diff --git a/external/Newtonsoft.Json/Src/Lib/NUnit/DotNet/nunit.framework.dll b/external/Newtonsoft.Json/Src/Lib/NUnit/DotNet/nunit.framework.dll
deleted file mode 100644
index de687d97f9..0000000000
Binary files a/external/Newtonsoft.Json/Src/Lib/NUnit/DotNet/nunit.framework.dll and /dev/null differ
diff --git a/external/Newtonsoft.Json/Src/Lib/NUnit/Silverlight/nunit.framework.dll b/external/Newtonsoft.Json/Src/Lib/NUnit/Silverlight/nunit.framework.dll
deleted file mode 100644
index d4e0b72ad1..0000000000
Binary files a/external/Newtonsoft.Json/Src/Lib/NUnit/Silverlight/nunit.framework.dll and /dev/null differ
diff --git a/external/Newtonsoft.Json/Tools/7-zip/7za.exe.REMOVED.git-id b/external/Newtonsoft.Json/Tools/7-zip/7za.exe.REMOVED.git-id
deleted file mode 100644
index 66ca89ca58..0000000000
--- a/external/Newtonsoft.Json/Tools/7-zip/7za.exe.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-12b9499a28960378cd26a7b7f0733681c49a5d71
\ No newline at end of file
diff --git a/external/Newtonsoft.Json/Tools/NUnit/framework/nunit.framework.dll.REMOVED.git-id b/external/Newtonsoft.Json/Tools/NUnit/framework/nunit.framework.dll.REMOVED.git-id
deleted file mode 100644
index 2c93f7b42f..0000000000
--- a/external/Newtonsoft.Json/Tools/NUnit/framework/nunit.framework.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-6856e51ef08a8e681896c3a84ccbeea8975d5947
\ No newline at end of file
diff --git a/external/Newtonsoft.Json/Tools/NUnit/framework/nunit.mocks.dll b/external/Newtonsoft.Json/Tools/NUnit/framework/nunit.mocks.dll
deleted file mode 100644
index 6ee2c1cc20..0000000000
Binary files a/external/Newtonsoft.Json/Tools/NUnit/framework/nunit.mocks.dll and /dev/null differ
diff --git a/external/Newtonsoft.Json/Tools/NUnit/lib/nunit-console-runner.dll b/external/Newtonsoft.Json/Tools/NUnit/lib/nunit-console-runner.dll
deleted file mode 100644
index 1709ce7bd2..0000000000
Binary files a/external/Newtonsoft.Json/Tools/NUnit/lib/nunit-console-runner.dll and /dev/null differ
diff --git a/external/Newtonsoft.Json/Tools/NUnit/lib/nunit-gui-runner.dll.REMOVED.git-id b/external/Newtonsoft.Json/Tools/NUnit/lib/nunit-gui-runner.dll.REMOVED.git-id
deleted file mode 100644
index 0fd7dd9516..0000000000
--- a/external/Newtonsoft.Json/Tools/NUnit/lib/nunit-gui-runner.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-35efa737c3957ac14e4480d2a559ff4127298597
\ No newline at end of file
diff --git a/external/Newtonsoft.Json/Tools/NUnit/lib/nunit.core.dll.REMOVED.git-id b/external/Newtonsoft.Json/Tools/NUnit/lib/nunit.core.dll.REMOVED.git-id
deleted file mode 100644
index 0cc1e1dd6c..0000000000
--- a/external/Newtonsoft.Json/Tools/NUnit/lib/nunit.core.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-a1dd69866dfe9f4a0ea9975d961b02230aa66969
\ No newline at end of file
diff --git a/external/Newtonsoft.Json/Tools/NUnit/lib/nunit.core.interfaces.dll b/external/Newtonsoft.Json/Tools/NUnit/lib/nunit.core.interfaces.dll
deleted file mode 100644
index 0ac8788205..0000000000
Binary files a/external/Newtonsoft.Json/Tools/NUnit/lib/nunit.core.interfaces.dll and /dev/null differ
diff --git a/external/Newtonsoft.Json/Tools/NUnit/lib/nunit.uiexception.dll b/external/Newtonsoft.Json/Tools/NUnit/lib/nunit.uiexception.dll
deleted file mode 100644
index 610c1700ed..0000000000
Binary files a/external/Newtonsoft.Json/Tools/NUnit/lib/nunit.uiexception.dll and /dev/null differ
diff --git a/external/Newtonsoft.Json/Tools/NUnit/lib/nunit.uikit.dll.REMOVED.git-id b/external/Newtonsoft.Json/Tools/NUnit/lib/nunit.uikit.dll.REMOVED.git-id
deleted file mode 100644
index 58576daa40..0000000000
--- a/external/Newtonsoft.Json/Tools/NUnit/lib/nunit.uikit.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-9087db2d16660e0fa83bc9d3c64bd01e21807d61
\ No newline at end of file
diff --git a/external/Newtonsoft.Json/Tools/NUnit/lib/nunit.util.dll.REMOVED.git-id b/external/Newtonsoft.Json/Tools/NUnit/lib/nunit.util.dll.REMOVED.git-id
deleted file mode 100644
index acb5c09892..0000000000
--- a/external/Newtonsoft.Json/Tools/NUnit/lib/nunit.util.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-0b315c2106daf056a34764827fa3ca8affd2959e
\ No newline at end of file
diff --git a/external/Newtonsoft.Json/Tools/NUnit/nunit-agent-x86.exe b/external/Newtonsoft.Json/Tools/NUnit/nunit-agent-x86.exe
deleted file mode 100644
index ebcee1be24..0000000000
Binary files a/external/Newtonsoft.Json/Tools/NUnit/nunit-agent-x86.exe and /dev/null differ
diff --git a/external/Newtonsoft.Json/Tools/NUnit/nunit-agent.exe b/external/Newtonsoft.Json/Tools/NUnit/nunit-agent.exe
deleted file mode 100644
index ec41f32382..0000000000
Binary files a/external/Newtonsoft.Json/Tools/NUnit/nunit-agent.exe and /dev/null differ
diff --git a/external/Newtonsoft.Json/Tools/NUnit/nunit-console-x86.exe b/external/Newtonsoft.Json/Tools/NUnit/nunit-console-x86.exe
deleted file mode 100644
index e08ac9c81d..0000000000
Binary files a/external/Newtonsoft.Json/Tools/NUnit/nunit-console-x86.exe and /dev/null differ
diff --git a/external/Newtonsoft.Json/Tools/NUnit/nunit-console.exe b/external/Newtonsoft.Json/Tools/NUnit/nunit-console.exe
deleted file mode 100644
index 1544a9d831..0000000000
Binary files a/external/Newtonsoft.Json/Tools/NUnit/nunit-console.exe and /dev/null differ
diff --git a/external/Newtonsoft.Json/Tools/NUnit/nunit-x86.exe b/external/Newtonsoft.Json/Tools/NUnit/nunit-x86.exe
deleted file mode 100644
index fd342c070a..0000000000
Binary files a/external/Newtonsoft.Json/Tools/NUnit/nunit-x86.exe and /dev/null differ
diff --git a/external/Newtonsoft.Json/Tools/NUnit/nunit.exe b/external/Newtonsoft.Json/Tools/NUnit/nunit.exe
deleted file mode 100644
index ad8b08af38..0000000000
Binary files a/external/Newtonsoft.Json/Tools/NUnit/nunit.exe and /dev/null differ
diff --git a/external/Newtonsoft.Json/Tools/NuGet/NuGet.exe.REMOVED.git-id b/external/Newtonsoft.Json/Tools/NuGet/NuGet.exe.REMOVED.git-id
deleted file mode 100644
index f1025135f2..0000000000
--- a/external/Newtonsoft.Json/Tools/NuGet/NuGet.exe.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-34ad49b494dd855dabf1b1cee5d3a8d51525d3b9
\ No newline at end of file
diff --git a/external/aspnetwebstack/test/System.Web.WebPages.Deployment.Test/TestFiles/ConfigTestAssemblies/V2_Signed/System.Web.WebPages.Deployment.dll b/external/aspnetwebstack/test/System.Web.WebPages.Deployment.Test/TestFiles/ConfigTestAssemblies/V2_Signed/System.Web.WebPages.Deployment.dll
deleted file mode 100644
index d219ec8553..0000000000
Binary files a/external/aspnetwebstack/test/System.Web.WebPages.Deployment.Test/TestFiles/ConfigTestAssemblies/V2_Signed/System.Web.WebPages.Deployment.dll and /dev/null differ
diff --git a/external/aspnetwebstack/test/System.Web.WebPages.Deployment.Test/TestFiles/ConfigTestAssemblies/V2_Unsigned/System.Web.WebPages.Deployment.dll b/external/aspnetwebstack/test/System.Web.WebPages.Deployment.Test/TestFiles/ConfigTestAssemblies/V2_Unsigned/System.Web.WebPages.Deployment.dll
deleted file mode 100644
index ced1480455..0000000000
Binary files a/external/aspnetwebstack/test/System.Web.WebPages.Deployment.Test/TestFiles/ConfigTestAssemblies/V2_Unsigned/System.Web.WebPages.Deployment.dll and /dev/null differ
diff --git a/external/cecil/Test/Resources/assemblies/PortableClassLibrary.dll b/external/cecil/Test/Resources/assemblies/PortableClassLibrary.dll
deleted file mode 100644
index 21bb42fb92..0000000000
Binary files a/external/cecil/Test/Resources/assemblies/PortableClassLibrary.dll and /dev/null differ
diff --git a/external/cecil/Test/Resources/assemblies/boxedoptarg.dll b/external/cecil/Test/Resources/assemblies/boxedoptarg.dll
deleted file mode 100644
index 23edd61bb8..0000000000
Binary files a/external/cecil/Test/Resources/assemblies/boxedoptarg.dll and /dev/null differ
diff --git a/external/cecil/Test/Resources/assemblies/catch.exe b/external/cecil/Test/Resources/assemblies/catch.exe
deleted file mode 100644
index d7ef04afb2..0000000000
Binary files a/external/cecil/Test/Resources/assemblies/catch.exe and /dev/null differ
diff --git a/external/cecil/Test/Resources/assemblies/cppcli.dll b/external/cecil/Test/Resources/assemblies/cppcli.dll
deleted file mode 100644
index f216fde980..0000000000
Binary files a/external/cecil/Test/Resources/assemblies/cppcli.dll and /dev/null differ
diff --git a/external/cecil/Test/Resources/assemblies/cscgpbug.dll b/external/cecil/Test/Resources/assemblies/cscgpbug.dll
deleted file mode 100755
index 5a5c0f3f4d..0000000000
Binary files a/external/cecil/Test/Resources/assemblies/cscgpbug.dll and /dev/null differ
diff --git a/external/cecil/Test/Resources/assemblies/decsec-att.dll b/external/cecil/Test/Resources/assemblies/decsec-att.dll
deleted file mode 100644
index e9ac355408..0000000000
Binary files a/external/cecil/Test/Resources/assemblies/decsec-att.dll and /dev/null differ
diff --git a/external/cecil/Test/Resources/assemblies/decsec-xml.dll b/external/cecil/Test/Resources/assemblies/decsec-xml.dll
deleted file mode 100644
index fbaa51cac3..0000000000
Binary files a/external/cecil/Test/Resources/assemblies/decsec-xml.dll and /dev/null differ
diff --git a/external/cecil/Test/Resources/assemblies/decsec1-xml.dll b/external/cecil/Test/Resources/assemblies/decsec1-xml.dll
deleted file mode 100755
index d898c2ab3c..0000000000
Binary files a/external/cecil/Test/Resources/assemblies/decsec1-xml.dll and /dev/null differ
diff --git a/external/cecil/Test/Resources/assemblies/delay-signed.dll b/external/cecil/Test/Resources/assemblies/delay-signed.dll
deleted file mode 100644
index 3571ccfd4b..0000000000
Binary files a/external/cecil/Test/Resources/assemblies/delay-signed.dll and /dev/null differ
diff --git a/external/cecil/Test/Resources/assemblies/empty-decsec-att.dll b/external/cecil/Test/Resources/assemblies/empty-decsec-att.dll
deleted file mode 100644
index 2dcd9418ba..0000000000
Binary files a/external/cecil/Test/Resources/assemblies/empty-decsec-att.dll and /dev/null differ
diff --git a/external/cecil/Test/Resources/assemblies/fptr.exe b/external/cecil/Test/Resources/assemblies/fptr.exe
deleted file mode 100644
index e5be5ad5e9..0000000000
Binary files a/external/cecil/Test/Resources/assemblies/fptr.exe and /dev/null differ
diff --git a/external/cecil/Test/Resources/assemblies/gifaceref.exe b/external/cecil/Test/Resources/assemblies/gifaceref.exe
deleted file mode 100644
index c8e2ed1231..0000000000
Binary files a/external/cecil/Test/Resources/assemblies/gifaceref.exe and /dev/null differ
diff --git a/external/cecil/Test/Resources/assemblies/hello.anycpu.exe b/external/cecil/Test/Resources/assemblies/hello.anycpu.exe
deleted file mode 100644
index 44ef8db84c..0000000000
Binary files a/external/cecil/Test/Resources/assemblies/hello.anycpu.exe and /dev/null differ
diff --git a/external/cecil/Test/Resources/assemblies/hello.exe b/external/cecil/Test/Resources/assemblies/hello.exe
deleted file mode 100644
index efd7c7da9b..0000000000
Binary files a/external/cecil/Test/Resources/assemblies/hello.exe and /dev/null differ
diff --git a/external/cecil/Test/Resources/assemblies/hello.ia64.exe b/external/cecil/Test/Resources/assemblies/hello.ia64.exe
deleted file mode 100644
index 1d50f54d8b..0000000000
Binary files a/external/cecil/Test/Resources/assemblies/hello.ia64.exe and /dev/null differ
diff --git a/external/cecil/Test/Resources/assemblies/hello.x64.exe b/external/cecil/Test/Resources/assemblies/hello.x64.exe
deleted file mode 100644
index 9a8aeef84a..0000000000
Binary files a/external/cecil/Test/Resources/assemblies/hello.x64.exe and /dev/null differ
diff --git a/external/cecil/Test/Resources/assemblies/hello.x86.exe b/external/cecil/Test/Resources/assemblies/hello.x86.exe
deleted file mode 100644
index 1e0c064f6f..0000000000
Binary files a/external/cecil/Test/Resources/assemblies/hello.x86.exe and /dev/null differ
diff --git a/external/cecil/Test/Resources/assemblies/hello1.exe b/external/cecil/Test/Resources/assemblies/hello1.exe
deleted file mode 100644
index c83aecfd13..0000000000
Binary files a/external/cecil/Test/Resources/assemblies/hello1.exe and /dev/null differ
diff --git a/external/cecil/Test/Resources/assemblies/hellow.exe b/external/cecil/Test/Resources/assemblies/hellow.exe
deleted file mode 100644
index b5670845f5..0000000000
Binary files a/external/cecil/Test/Resources/assemblies/hellow.exe and /dev/null differ
diff --git a/external/cecil/Test/Resources/assemblies/iterator.exe b/external/cecil/Test/Resources/assemblies/iterator.exe
deleted file mode 100644
index 5e51ed960d..0000000000
Binary files a/external/cecil/Test/Resources/assemblies/iterator.exe and /dev/null differ
diff --git a/external/cecil/Test/Resources/assemblies/libhello.dll b/external/cecil/Test/Resources/assemblies/libhello.dll
deleted file mode 100644
index 7b43e0114e..0000000000
Binary files a/external/cecil/Test/Resources/assemblies/libhello.dll and /dev/null differ
diff --git a/external/cecil/Test/Resources/assemblies/libres.dll b/external/cecil/Test/Resources/assemblies/libres.dll
deleted file mode 100644
index 66a2b194d2..0000000000
Binary files a/external/cecil/Test/Resources/assemblies/libres.dll and /dev/null differ
diff --git a/external/cecil/Test/Resources/assemblies/marshal.dll b/external/cecil/Test/Resources/assemblies/marshal.dll
deleted file mode 100644
index 04c85eff2e..0000000000
Binary files a/external/cecil/Test/Resources/assemblies/marshal.dll and /dev/null differ
diff --git a/external/cecil/Test/Resources/assemblies/metro.exe b/external/cecil/Test/Resources/assemblies/metro.exe
deleted file mode 100644
index 68784b316e..0000000000
Binary files a/external/cecil/Test/Resources/assemblies/metro.exe and /dev/null differ
diff --git a/external/cecil/Test/Resources/assemblies/mma.exe b/external/cecil/Test/Resources/assemblies/mma.exe
deleted file mode 100644
index 78632f8dd4..0000000000
Binary files a/external/cecil/Test/Resources/assemblies/mma.exe and /dev/null differ
diff --git a/external/cecil/Test/Resources/assemblies/noblob.dll b/external/cecil/Test/Resources/assemblies/noblob.dll
deleted file mode 100644
index 350181a383..0000000000
Binary files a/external/cecil/Test/Resources/assemblies/noblob.dll and /dev/null differ
diff --git a/external/cecil/Test/Resources/assemblies/pinvoke.exe b/external/cecil/Test/Resources/assemblies/pinvoke.exe
deleted file mode 100644
index 2bd10bf8be..0000000000
Binary files a/external/cecil/Test/Resources/assemblies/pinvoke.exe and /dev/null differ
diff --git a/external/cecil/Test/Resources/assemblies/switch.exe b/external/cecil/Test/Resources/assemblies/switch.exe
deleted file mode 100644
index 114083242c..0000000000
Binary files a/external/cecil/Test/Resources/assemblies/switch.exe and /dev/null differ
diff --git a/external/cecil/Test/Resources/assemblies/varargs.exe b/external/cecil/Test/Resources/assemblies/varargs.exe
deleted file mode 100644
index 4e3acf4cda..0000000000
Binary files a/external/cecil/Test/Resources/assemblies/varargs.exe and /dev/null differ
diff --git a/external/cecil/Test/Resources/assemblies/wp7.dll b/external/cecil/Test/Resources/assemblies/wp7.dll
deleted file mode 100644
index c3cbf7b6f1..0000000000
Binary files a/external/cecil/Test/Resources/assemblies/wp7.dll and /dev/null differ
diff --git a/external/cecil/Test/libs/nunit-2.6.2/nunit.core.dll.REMOVED.git-id b/external/cecil/Test/libs/nunit-2.6.2/nunit.core.dll.REMOVED.git-id
deleted file mode 100644
index d04c5932da..0000000000
--- a/external/cecil/Test/libs/nunit-2.6.2/nunit.core.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-8e6d9566c1347d99d53bc27c8e2085d3860aa7f6
\ No newline at end of file
diff --git a/external/cecil/Test/libs/nunit-2.6.2/nunit.core.interfaces.dll b/external/cecil/Test/libs/nunit-2.6.2/nunit.core.interfaces.dll
deleted file mode 100755
index a966ad5217..0000000000
Binary files a/external/cecil/Test/libs/nunit-2.6.2/nunit.core.interfaces.dll and /dev/null differ
diff --git a/external/cecil/Test/libs/nunit-2.6.2/nunit.framework.dll.REMOVED.git-id b/external/cecil/Test/libs/nunit-2.6.2/nunit.framework.dll.REMOVED.git-id
deleted file mode 100644
index 6052807984..0000000000
--- a/external/cecil/Test/libs/nunit-2.6.2/nunit.framework.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-3e24ba1ca6260d7d0499624d13d2c5a2cd75b52a
\ No newline at end of file
diff --git a/external/cecil/rocks/Test/Resources/assemblies/decsec-att.dll b/external/cecil/rocks/Test/Resources/assemblies/decsec-att.dll
deleted file mode 100644
index e9ac355408..0000000000
Binary files a/external/cecil/rocks/Test/Resources/assemblies/decsec-att.dll and /dev/null differ
diff --git a/external/cecil/rocks/Test/Resources/assemblies/decsec-xml.dll b/external/cecil/rocks/Test/Resources/assemblies/decsec-xml.dll
deleted file mode 100644
index fbaa51cac3..0000000000
Binary files a/external/cecil/rocks/Test/Resources/assemblies/decsec-xml.dll and /dev/null differ
diff --git a/external/cecil/symbols/mdb/Test/Resources/assemblies/hello.exe b/external/cecil/symbols/mdb/Test/Resources/assemblies/hello.exe
deleted file mode 100644
index c2e4b9b38a..0000000000
Binary files a/external/cecil/symbols/mdb/Test/Resources/assemblies/hello.exe and /dev/null differ
diff --git a/external/cecil/symbols/pdb/Test/Resources/assemblies/VBConsApp.exe b/external/cecil/symbols/pdb/Test/Resources/assemblies/VBConsApp.exe
deleted file mode 100755
index c86b64b151..0000000000
Binary files a/external/cecil/symbols/pdb/Test/Resources/assemblies/VBConsApp.exe and /dev/null differ
diff --git a/external/cecil/symbols/pdb/Test/Resources/assemblies/fsapp.exe b/external/cecil/symbols/pdb/Test/Resources/assemblies/fsapp.exe
deleted file mode 100755
index 7cdd2368ec..0000000000
Binary files a/external/cecil/symbols/pdb/Test/Resources/assemblies/fsapp.exe and /dev/null differ
diff --git a/external/cecil/symbols/pdb/Test/Resources/assemblies/test.exe b/external/cecil/symbols/pdb/Test/Resources/assemblies/test.exe
deleted file mode 100644
index 1f45491b73..0000000000
Binary files a/external/cecil/symbols/pdb/Test/Resources/assemblies/test.exe and /dev/null differ
diff --git a/external/entityframework/src/NuGet/EntityFramework.SqlServerCompact/lib/net40/System.Data.SqlServerCe.Entity.dll.REMOVED.git-id b/external/entityframework/src/NuGet/EntityFramework.SqlServerCompact/lib/net40/System.Data.SqlServerCe.Entity.dll.REMOVED.git-id
deleted file mode 100644
index c156c3fe28..0000000000
--- a/external/entityframework/src/NuGet/EntityFramework.SqlServerCompact/lib/net40/System.Data.SqlServerCe.Entity.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-7588cffbe01a245ef6d706606572e43b7ed5788b
\ No newline at end of file
diff --git a/external/ikdasm/IKVM.Reflection.dll.REMOVED.git-id b/external/ikdasm/IKVM.Reflection.dll.REMOVED.git-id
deleted file mode 100644
index 7aa6c85ff1..0000000000
--- a/external/ikdasm/IKVM.Reflection.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-d79cd451c3c5154e26435e5615654ff4cdb0f714
\ No newline at end of file
diff --git a/external/ikvm/bin/ICSharpCode.SharpZipLib.dll.REMOVED.git-id b/external/ikvm/bin/ICSharpCode.SharpZipLib.dll.REMOVED.git-id
deleted file mode 100644
index 0dc5124b53..0000000000
--- a/external/ikvm/bin/ICSharpCode.SharpZipLib.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-77bafe8ba867a1618b8735200289f6fad68b825e
\ No newline at end of file
diff --git a/external/rx/Rx/NET/Samples/HistoricalScheduling/References/System.Reactive.Core.dll.REMOVED.git-id b/external/rx/Rx/NET/Samples/HistoricalScheduling/References/System.Reactive.Core.dll.REMOVED.git-id
deleted file mode 100644
index 3ab3cf23a9..0000000000
--- a/external/rx/Rx/NET/Samples/HistoricalScheduling/References/System.Reactive.Core.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-f767bb9aa09536eee642a3380bffe7c535560a55
\ No newline at end of file
diff --git a/external/rx/Rx/NET/Samples/HistoricalScheduling/References/System.Reactive.Interfaces.dll b/external/rx/Rx/NET/Samples/HistoricalScheduling/References/System.Reactive.Interfaces.dll
deleted file mode 100644
index 0cc57d753f..0000000000
Binary files a/external/rx/Rx/NET/Samples/HistoricalScheduling/References/System.Reactive.Interfaces.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Samples/HistoricalScheduling/References/System.Reactive.Linq.dll.REMOVED.git-id b/external/rx/Rx/NET/Samples/HistoricalScheduling/References/System.Reactive.Linq.dll.REMOVED.git-id
deleted file mode 100644
index 8ff6dbf589..0000000000
--- a/external/rx/Rx/NET/Samples/HistoricalScheduling/References/System.Reactive.Linq.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-cd601f8c50db07a389b4babbbdd49bced6f2f417
\ No newline at end of file
diff --git a/external/rx/Rx/NET/Samples/HistoricalScheduling/References/System.Reactive.PlatformServices.dll b/external/rx/Rx/NET/Samples/HistoricalScheduling/References/System.Reactive.PlatformServices.dll
deleted file mode 100644
index 3b8798c800..0000000000
Binary files a/external/rx/Rx/NET/Samples/HistoricalScheduling/References/System.Reactive.PlatformServices.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Samples/Portable/.nuget/NuGet.exe.REMOVED.git-id b/external/rx/Rx/NET/Samples/Portable/.nuget/NuGet.exe.REMOVED.git-id
deleted file mode 100644
index db99c75dd1..0000000000
--- a/external/rx/Rx/NET/Samples/Portable/.nuget/NuGet.exe.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-2c9369842a726da0644cf0316734b02edcac4ac6
\ No newline at end of file
diff --git a/external/rx/Rx/NET/Samples/RxRemoteMouseMoves/References/System.Reactive.Core.dll b/external/rx/Rx/NET/Samples/RxRemoteMouseMoves/References/System.Reactive.Core.dll
deleted file mode 100644
index aecf41e42c..0000000000
Binary files a/external/rx/Rx/NET/Samples/RxRemoteMouseMoves/References/System.Reactive.Core.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Samples/RxRemoteMouseMoves/References/System.Reactive.Interfaces.dll b/external/rx/Rx/NET/Samples/RxRemoteMouseMoves/References/System.Reactive.Interfaces.dll
deleted file mode 100644
index 47aa9d10ea..0000000000
Binary files a/external/rx/Rx/NET/Samples/RxRemoteMouseMoves/References/System.Reactive.Interfaces.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Samples/RxRemoteMouseMoves/References/System.Reactive.Linq.dll.REMOVED.git-id b/external/rx/Rx/NET/Samples/RxRemoteMouseMoves/References/System.Reactive.Linq.dll.REMOVED.git-id
deleted file mode 100644
index c29ed1e2a1..0000000000
--- a/external/rx/Rx/NET/Samples/RxRemoteMouseMoves/References/System.Reactive.Linq.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-5c56946c826a7f77c6a0d65489629966c18f492c
\ No newline at end of file
diff --git a/external/rx/Rx/NET/Samples/RxRemoteMouseMoves/References/System.Reactive.PlatformServices.dll b/external/rx/Rx/NET/Samples/RxRemoteMouseMoves/References/System.Reactive.PlatformServices.dll
deleted file mode 100644
index b1413d0a61..0000000000
Binary files a/external/rx/Rx/NET/Samples/RxRemoteMouseMoves/References/System.Reactive.PlatformServices.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Samples/RxRemoteMouseMoves/References/System.Reactive.Runtime.Remoting.dll b/external/rx/Rx/NET/Samples/RxRemoteMouseMoves/References/System.Reactive.Runtime.Remoting.dll
deleted file mode 100644
index 8b3b3e3327..0000000000
Binary files a/external/rx/Rx/NET/Samples/RxRemoteMouseMoves/References/System.Reactive.Runtime.Remoting.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Samples/RxRemoteMouseMoves/References/System.Reactive.Windows.Forms.dll b/external/rx/Rx/NET/Samples/RxRemoteMouseMoves/References/System.Reactive.Windows.Forms.dll
deleted file mode 100644
index 0f4dcac9a1..0000000000
Binary files a/external/rx/Rx/NET/Samples/RxRemoteMouseMoves/References/System.Reactive.Windows.Forms.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/.nuget/NuGet.exe.REMOVED.git-id b/external/rx/Rx/NET/Source/.nuget/NuGet.exe.REMOVED.git-id
deleted file mode 100644
index 66066768b1..0000000000
--- a/external/rx/Rx/NET/Source/.nuget/NuGet.exe.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-63c19c97db9c0fbed1eab83c1688f45a776f800a
\ No newline at end of file
diff --git a/external/rx/Rx/NET/Source/References/DESKTOPCLR20/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll b/external/rx/Rx/NET/Source/References/DESKTOPCLR20/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
deleted file mode 100644
index 387ad78fab..0000000000
Binary files a/external/rx/Rx/NET/Source/References/DESKTOPCLR20/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/References/DESKTOPCLR40/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll b/external/rx/Rx/NET/Source/References/DESKTOPCLR40/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
deleted file mode 100644
index 37a149f735..0000000000
Binary files a/external/rx/Rx/NET/Source/References/DESKTOPCLR40/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/References/SILVERLIGHT3/Microsoft.Silverlight.Testing.dll.REMOVED.git-id b/external/rx/Rx/NET/Source/References/SILVERLIGHT3/Microsoft.Silverlight.Testing.dll.REMOVED.git-id
deleted file mode 100644
index d222674921..0000000000
--- a/external/rx/Rx/NET/Source/References/SILVERLIGHT3/Microsoft.Silverlight.Testing.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-b1425ca8499b5bc912f6bfda68dbd5d3de1f0c94
\ No newline at end of file
diff --git a/external/rx/Rx/NET/Source/References/SILVERLIGHT3/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll b/external/rx/Rx/NET/Source/References/SILVERLIGHT3/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
deleted file mode 100644
index 0f723cd679..0000000000
Binary files a/external/rx/Rx/NET/Source/References/SILVERLIGHT3/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/References/SILVERLIGHT3/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll b/external/rx/Rx/NET/Source/References/SILVERLIGHT3/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll
deleted file mode 100644
index 0f723cd679..0000000000
Binary files a/external/rx/Rx/NET/Source/References/SILVERLIGHT3/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/References/SILVERLIGHT4/Microsoft.Silverlight.Testing.dll.REMOVED.git-id b/external/rx/Rx/NET/Source/References/SILVERLIGHT4/Microsoft.Silverlight.Testing.dll.REMOVED.git-id
deleted file mode 100644
index a9a4e371d9..0000000000
--- a/external/rx/Rx/NET/Source/References/SILVERLIGHT4/Microsoft.Silverlight.Testing.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-0c6df1878d9495b8a57830f45e6835bedb96e11f
\ No newline at end of file
diff --git a/external/rx/Rx/NET/Source/References/SILVERLIGHT4/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll b/external/rx/Rx/NET/Source/References/SILVERLIGHT4/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
deleted file mode 100644
index 9313918b18..0000000000
Binary files a/external/rx/Rx/NET/Source/References/SILVERLIGHT4/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/References/SILVERLIGHT4/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll b/external/rx/Rx/NET/Source/References/SILVERLIGHT4/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll
deleted file mode 100644
index 9313918b18..0000000000
Binary files a/external/rx/Rx/NET/Source/References/SILVERLIGHT4/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/References/SILVERLIGHT5/Microsoft.Silverlight.Testing.dll.REMOVED.git-id b/external/rx/Rx/NET/Source/References/SILVERLIGHT5/Microsoft.Silverlight.Testing.dll.REMOVED.git-id
deleted file mode 100644
index a9a4e371d9..0000000000
--- a/external/rx/Rx/NET/Source/References/SILVERLIGHT5/Microsoft.Silverlight.Testing.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-0c6df1878d9495b8a57830f45e6835bedb96e11f
\ No newline at end of file
diff --git a/external/rx/Rx/NET/Source/References/SILVERLIGHT5/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll b/external/rx/Rx/NET/Source/References/SILVERLIGHT5/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
deleted file mode 100644
index 9313918b18..0000000000
Binary files a/external/rx/Rx/NET/Source/References/SILVERLIGHT5/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/References/SILVERLIGHT5/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll b/external/rx/Rx/NET/Source/References/SILVERLIGHT5/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll
deleted file mode 100644
index 9313918b18..0000000000
Binary files a/external/rx/Rx/NET/Source/References/SILVERLIGHT5/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/References/SILVERLIGHTM7/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll b/external/rx/Rx/NET/Source/References/SILVERLIGHTM7/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
deleted file mode 100644
index 3e06f9ad96..0000000000
Binary files a/external/rx/Rx/NET/Source/References/SILVERLIGHTM7/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/References/SILVERLIGHTM7/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll b/external/rx/Rx/NET/Source/References/SILVERLIGHTM7/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll
deleted file mode 100644
index 3e06f9ad96..0000000000
Binary files a/external/rx/Rx/NET/Source/References/SILVERLIGHTM7/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/References/WINDOWS_PHONE8/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll b/external/rx/Rx/NET/Source/References/WINDOWS_PHONE8/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
deleted file mode 100644
index 9313918b18..0000000000
Binary files a/external/rx/Rx/NET/Source/References/WINDOWS_PHONE8/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/Rx_Xamarin/iOS/libs/System.Reactive.Core.dll b/external/rx/Rx/NET/Source/Rx_Xamarin/iOS/libs/System.Reactive.Core.dll
deleted file mode 100755
index bc2ece9c46..0000000000
Binary files a/external/rx/Rx/NET/Source/Rx_Xamarin/iOS/libs/System.Reactive.Core.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/Rx_Xamarin/iOS/libs/System.Reactive.Debugger.dll b/external/rx/Rx/NET/Source/Rx_Xamarin/iOS/libs/System.Reactive.Debugger.dll
deleted file mode 100755
index 0ecf5bd054..0000000000
Binary files a/external/rx/Rx/NET/Source/Rx_Xamarin/iOS/libs/System.Reactive.Debugger.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/Rx_Xamarin/iOS/libs/System.Reactive.Experimental.dll b/external/rx/Rx/NET/Source/Rx_Xamarin/iOS/libs/System.Reactive.Experimental.dll
deleted file mode 100755
index 094f6bd621..0000000000
Binary files a/external/rx/Rx/NET/Source/Rx_Xamarin/iOS/libs/System.Reactive.Experimental.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/Rx_Xamarin/iOS/libs/System.Reactive.Interfaces.dll b/external/rx/Rx/NET/Source/Rx_Xamarin/iOS/libs/System.Reactive.Interfaces.dll
deleted file mode 100755
index 568889931e..0000000000
Binary files a/external/rx/Rx/NET/Source/Rx_Xamarin/iOS/libs/System.Reactive.Interfaces.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/Rx_Xamarin/iOS/libs/System.Reactive.Linq.dll.REMOVED.git-id b/external/rx/Rx/NET/Source/Rx_Xamarin/iOS/libs/System.Reactive.Linq.dll.REMOVED.git-id
deleted file mode 100644
index f626a72227..0000000000
--- a/external/rx/Rx/NET/Source/Rx_Xamarin/iOS/libs/System.Reactive.Linq.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-6e59a538e4631f2c1589c298a64f1dad1f2c3ec4
\ No newline at end of file
diff --git a/external/rx/Rx/NET/Source/Rx_Xamarin/iOS/libs/System.Reactive.PlatformServices.dll b/external/rx/Rx/NET/Source/Rx_Xamarin/iOS/libs/System.Reactive.PlatformServices.dll
deleted file mode 100755
index 4fa49835a8..0000000000
Binary files a/external/rx/Rx/NET/Source/Rx_Xamarin/iOS/libs/System.Reactive.PlatformServices.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/net40/System.Runtime.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/net40/System.Runtime.dll
deleted file mode 100644
index fa831ade49..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/net40/System.Runtime.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/net40/System.Threading.Tasks.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/net40/System.Threading.Tasks.dll
deleted file mode 100644
index ebbac4cd10..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/net40/System.Threading.Tasks.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8+wp71/System.Runtime.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8+wp71/System.Runtime.dll
deleted file mode 100644
index 97ab730f29..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8+wp71/System.Runtime.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8+wp71/System.Threading.Tasks.dll.REMOVED.git-id b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8+wp71/System.Threading.Tasks.dll.REMOVED.git-id
deleted file mode 100644
index 3b60eb99b0..0000000000
--- a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8+wp71/System.Threading.Tasks.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-74f5e2caed93499de991cfd5ed70b868e5207474
\ No newline at end of file
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8+wp8/System.Runtime.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8+wp8/System.Runtime.dll
deleted file mode 100644
index fa831ade49..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8+wp8/System.Runtime.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8+wp8/System.Threading.Tasks.dll.REMOVED.git-id b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8+wp8/System.Threading.Tasks.dll.REMOVED.git-id
deleted file mode 100644
index 3b60eb99b0..0000000000
--- a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8+wp8/System.Threading.Tasks.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-74f5e2caed93499de991cfd5ed70b868e5207474
\ No newline at end of file
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8/System.Runtime.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8/System.Runtime.dll
deleted file mode 100644
index fa831ade49..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8/System.Runtime.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8/System.Threading.Tasks.dll.REMOVED.git-id b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8/System.Threading.Tasks.dll.REMOVED.git-id
deleted file mode 100644
index 3b60eb99b0..0000000000
--- a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8/System.Threading.Tasks.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-74f5e2caed93499de991cfd5ed70b868e5207474
\ No newline at end of file
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl5+win8+wp8/System.Runtime.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl5+win8+wp8/System.Runtime.dll
deleted file mode 100644
index fa831ade49..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl5+win8+wp8/System.Runtime.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl5+win8+wp8/System.Threading.Tasks.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl5+win8+wp8/System.Threading.Tasks.dll
deleted file mode 100644
index ebbac4cd10..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl5+win8+wp8/System.Threading.Tasks.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+win8+wp8/System.Runtime.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+win8+wp8/System.Runtime.dll
deleted file mode 100644
index fa831ade49..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+win8+wp8/System.Runtime.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+win8+wp8/System.Threading.Tasks.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+win8+wp8/System.Threading.Tasks.dll
deleted file mode 100644
index ebbac4cd10..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+win8+wp8/System.Threading.Tasks.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+win8/System.Runtime.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+win8/System.Runtime.dll
deleted file mode 100644
index fa831ade49..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+win8/System.Runtime.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+win8/System.Threading.Tasks.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+win8/System.Threading.Tasks.dll
deleted file mode 100644
index ebbac4cd10..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+win8/System.Threading.Tasks.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl4-windowsphone71/System.Runtime.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl4-windowsphone71/System.Runtime.dll
deleted file mode 100644
index 97ab730f29..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl4-windowsphone71/System.Runtime.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl4-windowsphone71/System.Threading.Tasks.dll.REMOVED.git-id b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl4-windowsphone71/System.Threading.Tasks.dll.REMOVED.git-id
deleted file mode 100644
index 3b60eb99b0..0000000000
--- a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl4-windowsphone71/System.Threading.Tasks.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-74f5e2caed93499de991cfd5ed70b868e5207474
\ No newline at end of file
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl4/System.Runtime.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl4/System.Runtime.dll
deleted file mode 100644
index fa831ade49..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl4/System.Runtime.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl4/System.Threading.Tasks.dll.REMOVED.git-id b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl4/System.Threading.Tasks.dll.REMOVED.git-id
deleted file mode 100644
index 3b60eb99b0..0000000000
--- a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl4/System.Threading.Tasks.dll.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-74f5e2caed93499de991cfd5ed70b868e5207474
\ No newline at end of file
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl5/System.Runtime.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl5/System.Runtime.dll
deleted file mode 100644
index fa831ade49..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl5/System.Runtime.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl5/System.Threading.Tasks.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl5/System.Threading.Tasks.dll
deleted file mode 100644
index ebbac4cd10..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl5/System.Threading.Tasks.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/net40/Microsoft.Threading.Tasks.Extensions.Desktop.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/net40/Microsoft.Threading.Tasks.Extensions.Desktop.dll
deleted file mode 100644
index fe18d0383d..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/net40/Microsoft.Threading.Tasks.Extensions.Desktop.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/net40/Microsoft.Threading.Tasks.Extensions.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/net40/Microsoft.Threading.Tasks.Extensions.dll
deleted file mode 100644
index e911377c2c..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/net40/Microsoft.Threading.Tasks.Extensions.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/net40/Microsoft.Threading.Tasks.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/net40/Microsoft.Threading.Tasks.dll
deleted file mode 100644
index 065d7460b8..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/net40/Microsoft.Threading.Tasks.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/net45/Microsoft.Threading.Tasks.Extensions.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/net45/Microsoft.Threading.Tasks.Extensions.dll
deleted file mode 100644
index e911377c2c..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/net45/Microsoft.Threading.Tasks.Extensions.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/net45/Microsoft.Threading.Tasks.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/net45/Microsoft.Threading.Tasks.dll
deleted file mode 100644
index 065d7460b8..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/net45/Microsoft.Threading.Tasks.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/portable-net40+sl4+win8+wp71/Microsoft.Threading.Tasks.Extensions.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/portable-net40+sl4+win8+wp71/Microsoft.Threading.Tasks.Extensions.dll
deleted file mode 100644
index e911377c2c..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/portable-net40+sl4+win8+wp71/Microsoft.Threading.Tasks.Extensions.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/portable-net40+sl4+win8+wp71/Microsoft.Threading.Tasks.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/portable-net40+sl4+win8+wp71/Microsoft.Threading.Tasks.dll
deleted file mode 100644
index 065d7460b8..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/portable-net40+sl4+win8+wp71/Microsoft.Threading.Tasks.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/portable-net45+win8+wp8/Microsoft.Threading.Tasks.Extensions.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/portable-net45+win8+wp8/Microsoft.Threading.Tasks.Extensions.dll
deleted file mode 100644
index e911377c2c..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/portable-net45+win8+wp8/Microsoft.Threading.Tasks.Extensions.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/portable-net45+win8+wp8/Microsoft.Threading.Tasks.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/portable-net45+win8+wp8/Microsoft.Threading.Tasks.dll
deleted file mode 100644
index 065d7460b8..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/portable-net45+win8+wp8/Microsoft.Threading.Tasks.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/portable-net45+win8/Microsoft.Threading.Tasks.Extensions.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/portable-net45+win8/Microsoft.Threading.Tasks.Extensions.dll
deleted file mode 100644
index e911377c2c..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/portable-net45+win8/Microsoft.Threading.Tasks.Extensions.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/portable-net45+win8/Microsoft.Threading.Tasks.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/portable-net45+win8/Microsoft.Threading.Tasks.dll
deleted file mode 100644
index 065d7460b8..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/portable-net45+win8/Microsoft.Threading.Tasks.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/sl4-windowsphone71/Microsoft.Threading.Tasks.Extensions.Phone.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/sl4-windowsphone71/Microsoft.Threading.Tasks.Extensions.Phone.dll
deleted file mode 100644
index 1d110cc218..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/sl4-windowsphone71/Microsoft.Threading.Tasks.Extensions.Phone.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/sl4-windowsphone71/Microsoft.Threading.Tasks.Extensions.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/sl4-windowsphone71/Microsoft.Threading.Tasks.Extensions.dll
deleted file mode 100644
index e911377c2c..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/sl4-windowsphone71/Microsoft.Threading.Tasks.Extensions.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/sl4-windowsphone71/Microsoft.Threading.Tasks.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/sl4-windowsphone71/Microsoft.Threading.Tasks.dll
deleted file mode 100644
index 065d7460b8..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/sl4-windowsphone71/Microsoft.Threading.Tasks.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/sl4/Microsoft.Threading.Tasks.Extensions.Silverlight.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/sl4/Microsoft.Threading.Tasks.Extensions.Silverlight.dll
deleted file mode 100644
index e683718583..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/sl4/Microsoft.Threading.Tasks.Extensions.Silverlight.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/sl4/Microsoft.Threading.Tasks.Extensions.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/sl4/Microsoft.Threading.Tasks.Extensions.dll
deleted file mode 100644
index e911377c2c..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/sl4/Microsoft.Threading.Tasks.Extensions.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/sl4/Microsoft.Threading.Tasks.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/sl4/Microsoft.Threading.Tasks.dll
deleted file mode 100644
index 065d7460b8..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/sl4/Microsoft.Threading.Tasks.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/win8/Microsoft.Threading.Tasks.Extensions.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/win8/Microsoft.Threading.Tasks.Extensions.dll
deleted file mode 100644
index e911377c2c..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/win8/Microsoft.Threading.Tasks.Extensions.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/win8/Microsoft.Threading.Tasks.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/win8/Microsoft.Threading.Tasks.dll
deleted file mode 100644
index 065d7460b8..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/win8/Microsoft.Threading.Tasks.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/wp8/Microsoft.Threading.Tasks.Extensions.Phone.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/wp8/Microsoft.Threading.Tasks.Extensions.Phone.dll
deleted file mode 100644
index 1d110cc218..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/wp8/Microsoft.Threading.Tasks.Extensions.Phone.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/wp8/Microsoft.Threading.Tasks.Extensions.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/wp8/Microsoft.Threading.Tasks.Extensions.dll
deleted file mode 100644
index e911377c2c..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/wp8/Microsoft.Threading.Tasks.Extensions.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/wp8/Microsoft.Threading.Tasks.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/wp8/Microsoft.Threading.Tasks.dll
deleted file mode 100644
index 065d7460b8..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/wp8/Microsoft.Threading.Tasks.dll and /dev/null differ
diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Build.1.0.4/tools/Microsoft.Bcl.Build.Tasks.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Build.1.0.4/tools/Microsoft.Bcl.Build.Tasks.dll
deleted file mode 100644
index 2097a515cf..0000000000
Binary files a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Build.1.0.4/tools/Microsoft.Bcl.Build.Tasks.dll and /dev/null differ
diff --git a/ikvm-native/Makefile.in b/ikvm-native/Makefile.in
index 496dfae73f..97657dbd50 100644
--- a/ikvm-native/Makefile.in
+++ b/ikvm-native/Makefile.in
@@ -239,6 +239,7 @@ ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+GDKX11 = @GDKX11@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_LIBS = @GLIB_LIBS@
@@ -247,6 +248,7 @@ GMODULE_LIBS = @GMODULE_LIBS@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
+GTKX11 = @GTKX11@
HAVE_MSGFMT = @HAVE_MSGFMT@
HOST_CC = @HOST_CC@
INSTALL = @INSTALL@
@@ -313,6 +315,7 @@ SQLITE3 = @SQLITE3@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
+WERROR_CFLAGS = @WERROR_CFLAGS@
X11 = @X11@
XATTR_LIB = @XATTR_LIB@
XGETTEXT = @XGETTEXT@
@@ -362,6 +365,7 @@ install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
libgc_dir = @libgc_dir@
+libgdiplus_install_loc = @libgdiplus_install_loc@
libgdiplus_loc = @libgdiplus_loc@
libmono_cflags = @libmono_cflags@
libmono_ldflags = @libmono_ldflags@
diff --git a/ikvm-native/jni.c b/ikvm-native/jni.c
index dec858e131..e638db1d76 100644
--- a/ikvm-native/jni.c
+++ b/ikvm-native/jni.c
@@ -486,11 +486,15 @@ static void* JNIEnv_vtable[] =
0 // jlong JNICALL GetDirectBufferCapacity(jobject buf);
};
-JNIEXPORT void** JNICALL ikvm_GetJNIEnvVTable()
+void** ikvm_GetJNIEnvVTable(void);
+
+JNIEXPORT void** JNICALL ikvm_GetJNIEnvVTable(void)
{
return JNIEnv_vtable;
}
+void* JNICALL ikvm_MarshalDelegate(void* p);
+
JNIEXPORT void* JNICALL ikvm_MarshalDelegate(void* p)
{
return p;
@@ -498,6 +502,8 @@ JNIEXPORT void* JNICALL ikvm_MarshalDelegate(void* p)
typedef jint (JNICALL *PJNI_ONLOAD)(JavaVM* vm, void* reserved);
+jint JNICALL ikvm_CallOnLoad(PJNI_ONLOAD method, JavaVM* vm, void* reserved);
+
JNIEXPORT jint JNICALL ikvm_CallOnLoad(PJNI_ONLOAD method, JavaVM* vm, void* reserved)
{
return method(vm, reserved);
diff --git a/ikvm-native/os.c b/ikvm-native/os.c
index 9f2115f712..43531ae0ea 100644
--- a/ikvm-native/os.c
+++ b/ikvm-native/os.c
@@ -61,16 +61,22 @@
#include
#include "jni.h"
+ void* JNICALL ikvm_LoadLibrary(char* psz);
+
JNIEXPORT void* JNICALL ikvm_LoadLibrary(char* psz)
{
return g_module_open(psz, 0);
}
+ void JNICALL ikvm_FreeLibrary(GModule* handle);
+
JNIEXPORT void JNICALL ikvm_FreeLibrary(GModule* handle)
{
g_module_close(handle);
}
+ void* JNICALL ikvm_GetProcAddress(GModule* handle, char* name, jint argc);
+
JNIEXPORT void* JNICALL ikvm_GetProcAddress(GModule* handle, char* name, jint argc)
{
void *symbol;
@@ -83,16 +89,22 @@
return NULL;
}
+ void* JNICALL ikvm_mmap(int fd, jboolean writeable, jboolean copy_on_write, jlong position, jint size);
+
JNIEXPORT void* JNICALL ikvm_mmap(int fd, jboolean writeable, jboolean copy_on_write, jlong position, jint size)
{
return mmap(0, size, writeable ? PROT_WRITE | PROT_READ : PROT_READ, copy_on_write ? MAP_PRIVATE : MAP_SHARED, fd, position);
}
+ int JNICALL ikvm_munmap(void* address, jint size);
+
JNIEXPORT int JNICALL ikvm_munmap(void* address, jint size)
{
return munmap(address, size);
}
+ int JNICALL ikvm_msync(void* address, jint size);
+
JNIEXPORT int JNICALL ikvm_msync(void* address, jint size)
{
#if defined(__native_client__) && defined(USE_NEWLIB)
diff --git a/libgc/Makefile.am b/libgc/Makefile.am
index 49dbe4be81..a53aafcbf3 100644
--- a/libgc/Makefile.am
+++ b/libgc/Makefile.am
@@ -68,7 +68,7 @@ libmonogc_static_la_LDFLAGS = -static
EXTRA_DIST += alpha_mach_dep.S mips_sgi_mach_dep.s sparc_mach_dep.S
-AM_CFLAGS = @GC_CFLAGS@
+AM_CFLAGS = $(WERROR_CFLAGS) @GC_CFLAGS@
if CPLUSPLUS
extra_checks = test_cpp
diff --git a/libgc/Makefile.in b/libgc/Makefile.in
index 0830dc26fa..6aa745d241 100644
--- a/libgc/Makefile.in
+++ b/libgc/Makefile.in
@@ -382,6 +382,7 @@ STRIP = @STRIP@
THREADDLLIBS = @THREADDLLIBS@
UNWINDLIBS = @UNWINDLIBS@
VERSION = @VERSION@
+WERROR_CFLAGS = @WERROR_CFLAGS@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
@@ -490,7 +491,7 @@ EXTRA_libmonogc_la_SOURCES = alpha_mach_dep.S \
libmonogc_static_la_SOURCES = $(libmonogc_la_SOURCES)
libmonogc_static_la_LIBADD = $(libmonogc_la_LIBADD)
libmonogc_static_la_LDFLAGS = -static
-AM_CFLAGS = @GC_CFLAGS@
+AM_CFLAGS = $(WERROR_CFLAGS) @GC_CFLAGS@
@CPLUSPLUS_FALSE@extra_checks =
@CPLUSPLUS_TRUE@extra_checks = test_cpp
diff --git a/libgc/acinclude.m4 b/libgc/acinclude.m4
index 526d00c1be..5216cd14a5 100644
--- a/libgc/acinclude.m4
+++ b/libgc/acinclude.m4
@@ -22,8 +22,8 @@ if test x$GCC != xyes; then
dolt_supported=no
fi
case $host in
-i?86-*-linux*|x86_64-*-linux*|powerpc-*-linux*|powerpc64-*-linux* \
-|amd64-*-freebsd*|i?86-*-freebsd*|ia64-*-freebsd*|arm*-*-linux*|sparc*-*-linux*|mips*-*-linux*)
+i?86-*-linux*|i?86-apple-darwin*|x86_64-*-linux*|powerpc-*-linux*|powerpc64-*-linux* \
+|amd64-*-freebsd*|i?86-*-freebsd*|ia64-*-freebsd*|arm*-*-linux*|sparc*-*-linux*|mips*-*-linux*|x86_64-apple-darwin*|aarch64*)
pic_options='-fPIC'
;;
?86-pc-cygwin*|i?86-pc-cygwin*)
diff --git a/libgc/configure.REMOVED.git-id b/libgc/configure.REMOVED.git-id
index 50384deaaf..eec630ea9d 100644
--- a/libgc/configure.REMOVED.git-id
+++ b/libgc/configure.REMOVED.git-id
@@ -1 +1 @@
-52fde0f680f5be6f8d59ff02d5040350384ada1b
\ No newline at end of file
+ec75f52b4a09d98c0cc1707b0a0f796e4c7a91c0
\ No newline at end of file
diff --git a/libgc/configure.ac b/libgc/configure.ac
index 837e2cb9f1..7dc04985a9 100644
--- a/libgc/configure.ac
+++ b/libgc/configure.ac
@@ -531,6 +531,12 @@ fi
AC_ARG_ENABLE(quiet-build, [ --enable-quiet-build Enable quiet libgc build (on by default)], enable_quiet_build=$enableval, enable_quiet_build=yes)
AM_CONDITIONAL(USE_LIBDIR, test -z "$with_cross_host")
+AC_ARG_ENABLE(werror, [ --enable-werror Pass -Werror to the C compiler], werror_flag=$enableval, werror_flag=no)
+if test x$werror_flag = xyes; then
+ WERROR_CFLAGS="-Werror"
+fi
+AC_SUBST([WERROR_CFLAGS])
+
if test "${multilib}" = "yes"; then
multilib_arg="--enable-multilib"
else
diff --git a/libgc/doc/Makefile.in b/libgc/doc/Makefile.in
index 4a9f711729..41fff87069 100644
--- a/libgc/doc/Makefile.in
+++ b/libgc/doc/Makefile.in
@@ -236,6 +236,7 @@ STRIP = @STRIP@
THREADDLLIBS = @THREADDLLIBS@
UNWINDLIBS = @UNWINDLIBS@
VERSION = @VERSION@
+WERROR_CFLAGS = @WERROR_CFLAGS@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
diff --git a/libgc/finalize.c b/libgc/finalize.c
index 91f6970180..5626e87213 100644
--- a/libgc/finalize.c
+++ b/libgc/finalize.c
@@ -366,6 +366,15 @@ GC_process_togglerefs (void)
GC_toggleref_array_size = w;
}
+/* Finalizer proc support */
+static void (*GC_object_finalized_proc) (GC_PTR obj);
+
+void
+GC_set_finalizer_notify_proc (void (*proc) (GC_PTR obj))
+{
+ GC_object_finalized_proc = proc;
+}
+
static void push_and_mark_object (GC_PTR p)
{
@@ -877,6 +886,10 @@ void GC_finalize()
fo_set_next(prev_fo, next_fo);
}
GC_fo_entries--;
+
+ if (GC_object_finalized_proc)
+ GC_object_finalized_proc (real_ptr);
+
/* Add to list of objects awaiting finalization. */
fo_set_next(curr_fo, GC_finalize_now);
GC_finalize_now = curr_fo;
diff --git a/libgc/include/Makefile.in b/libgc/include/Makefile.in
index 408a4a5f46..11f1224fec 100644
--- a/libgc/include/Makefile.in
+++ b/libgc/include/Makefile.in
@@ -252,6 +252,7 @@ STRIP = @STRIP@
THREADDLLIBS = @THREADDLLIBS@
UNWINDLIBS = @UNWINDLIBS@
VERSION = @VERSION@
+WERROR_CFLAGS = @WERROR_CFLAGS@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
diff --git a/libgc/include/gc.h b/libgc/include/gc.h
index a3eb3c2dc0..4693a3d9a5 100644
--- a/libgc/include/gc.h
+++ b/libgc/include/gc.h
@@ -778,6 +778,10 @@ GC_API int GC_unregister_long_link GC_PROTO((GC_PTR * /* link */));
GC_API void GC_toggleref_register_callback GC_PROTO((int (*proccess_toggleref) (GC_PTR obj)));
GC_API void GC_toggleref_add (GC_PTR object, int strong_ref);
+/* finalizer callback support */
+GC_API void GC_set_finalizer_notify_proc GC_PROTO((void (*object_finalized) (GC_PTR obj)));
+
+
/* Returns !=0 if GC_invoke_finalizers has something to do. */
GC_API int GC_should_invoke_finalizers GC_PROTO((void));
diff --git a/libgc/include/private/Makefile.in b/libgc/include/private/Makefile.in
index adb9de4e74..69fd33dff7 100644
--- a/libgc/include/private/Makefile.in
+++ b/libgc/include/private/Makefile.in
@@ -192,6 +192,7 @@ STRIP = @STRIP@
THREADDLLIBS = @THREADDLLIBS@
UNWINDLIBS = @UNWINDLIBS@
VERSION = @VERSION@
+WERROR_CFLAGS = @WERROR_CFLAGS@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
diff --git a/libgc/m4/Makefile.in b/libgc/m4/Makefile.in
index efcaed6595..b5fa04722d 100644
--- a/libgc/m4/Makefile.in
+++ b/libgc/m4/Makefile.in
@@ -192,6 +192,7 @@ STRIP = @STRIP@
THREADDLLIBS = @THREADDLLIBS@
UNWINDLIBS = @UNWINDLIBS@
VERSION = @VERSION@
+WERROR_CFLAGS = @WERROR_CFLAGS@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
diff --git a/libgc/mark_rts.c b/libgc/mark_rts.c
index 4074879a71..b3e996a29c 100644
--- a/libgc/mark_rts.c
+++ b/libgc/mark_rts.c
@@ -375,8 +375,15 @@ ptr_t GC_approx_sp()
/* doing something wrong. */
# ifdef _MSC_VER
# pragma warning(disable:4172)
+# endif
+# if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 408)
+# pragma GCC diagnostic push
+# pragma GCC diagnostic ignored "-Wreturn-local-addr"
# endif
return((ptr_t)(&dummy));
+# if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 408)
+# pragma GCC diagnostic pop
+# endif
# ifdef _MSC_VER
# pragma warning(default:4172)
# endif
diff --git a/m4/Makefile.in b/m4/Makefile.in
index b4e2847bdc..254a429464 100644
--- a/m4/Makefile.in
+++ b/m4/Makefile.in
@@ -161,6 +161,7 @@ ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+GDKX11 = @GDKX11@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_LIBS = @GLIB_LIBS@
@@ -169,6 +170,7 @@ GMODULE_LIBS = @GMODULE_LIBS@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
+GTKX11 = @GTKX11@
HAVE_MSGFMT = @HAVE_MSGFMT@
HOST_CC = @HOST_CC@
INSTALL = @INSTALL@
@@ -235,6 +237,7 @@ SQLITE3 = @SQLITE3@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
+WERROR_CFLAGS = @WERROR_CFLAGS@
X11 = @X11@
XATTR_LIB = @XATTR_LIB@
XGETTEXT = @XGETTEXT@
@@ -284,6 +287,7 @@ install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
libgc_dir = @libgc_dir@
+libgdiplus_install_loc = @libgdiplus_install_loc@
libgdiplus_loc = @libgdiplus_loc@
libmono_cflags = @libmono_cflags@
libmono_ldflags = @libmono_ldflags@
diff --git a/man/Makefile.in b/man/Makefile.in
index e1d1c55810..2d8708bab2 100644
--- a/man/Makefile.in
+++ b/man/Makefile.in
@@ -193,6 +193,7 @@ ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+GDKX11 = @GDKX11@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_LIBS = @GLIB_LIBS@
@@ -201,6 +202,7 @@ GMODULE_LIBS = @GMODULE_LIBS@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
+GTKX11 = @GTKX11@
HAVE_MSGFMT = @HAVE_MSGFMT@
HOST_CC = @HOST_CC@
INSTALL = @INSTALL@
@@ -267,6 +269,7 @@ SQLITE3 = @SQLITE3@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
+WERROR_CFLAGS = @WERROR_CFLAGS@
X11 = @X11@
XATTR_LIB = @XATTR_LIB@
XGETTEXT = @XGETTEXT@
@@ -316,6 +319,7 @@ install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
libgc_dir = @libgc_dir@
+libgdiplus_install_loc = @libgdiplus_install_loc@
libgdiplus_loc = @libgdiplus_loc@
libmono_cflags = @libmono_cflags@
libmono_ldflags = @libmono_ldflags@
diff --git a/man/mprof-report.1 b/man/mprof-report.1
index de40af60d8..4b1b781681 100644
--- a/man/mprof-report.1
+++ b/man/mprof-report.1
@@ -211,6 +211,15 @@ The following commands are available:
.IP \[bu] 2
\f[I]heapshot\f[]: perform a heapshot as soon as possible
.RE
+.IP \[bu] 2
+\f[I]counters\f[]: sample counters values every 1 second. This allow
+a really lightweight way to have insight in some of the runtime key
+metrics. Counters displayed in non verbose mode are : Methods from AOT,
+Methods JITted using mono JIT, Methods JITted using LLVM, Total time
+spent JITting (sec), User Time, System Time, Total Time, Working Set,
+Private Bytes, Virtual Bytes, Page Faults and CPU Load Average (1min,
+5min and 15min).
+.RE
.SS Analyzing the profile data
.PP
Currently there is a command line program (\f[I]mprof-report\f[])
@@ -284,6 +293,16 @@ where \f[I]MODE\f[] can be:
.IP \[bu] 2
\f[I]bytes\f[]: the total number of bytes used by objects of the
given type
+.PP
+To change the sort order of counters, use the option:
+.PP
+\f[B]--counters-sort=MODE\f[]
+.PP
+where \f[I]MODE\f[] can be:
+.IP \[bu] 2
+\f[I]time\f[]: sort values by time then category
+.IP \[bu] 2
+\f[I]category\f[]: sort values by category then time
.SS Selecting what data to report
.PP
The profiler by default collects data about many runtime subsystems
@@ -319,6 +338,8 @@ version
\f[I]thread\f[]: thread information
.IP \[bu] 2
\f[I]heapshot\f[]: live heap usage at heap shots
+.IP \[bu] 2
+\f[I]counters\f[]: counters samples
.PP
It is possible to limit some of the data displayed to a timeframe
of the program execution with the option:
diff --git a/mcs/Makefile b/mcs/Makefile
index 78af02bc44..a10dfa504c 100644
--- a/mcs/Makefile
+++ b/mcs/Makefile
@@ -24,7 +24,6 @@ centum_tests := \
class/System.XML \
class/Commons.Xml.Relaxng \
class/Cscompmgd \
- class/Microsoft.JScript \
class/Mono.Posix \
class/Mono.Security \
class/System.Design \
diff --git a/mcs/build/common/Consts.cs b/mcs/build/common/Consts.cs
index 104d5c4d6d..a1884da3d0 100644
--- a/mcs/build/common/Consts.cs
+++ b/mcs/build/common/Consts.cs
@@ -34,7 +34,7 @@ static class Consts
// Use these assembly version constants to make code more maintainable.
//
- public const string MonoVersion = "3.6.0.0";
+ public const string MonoVersion = "3.8.0.0";
public const string MonoCompany = "Mono development team";
public const string MonoProduct = "Mono Common Language Infrastructure";
public const string MonoCopyright = "(c) Various Mono authors";
diff --git a/mcs/build/profiles/basic.make b/mcs/build/profiles/basic.make
index c270cc81cc..12f6c82cff 100644
--- a/mcs/build/profiles/basic.make
+++ b/mcs/build/profiles/basic.make
@@ -65,7 +65,7 @@ do-profile-check: $(depsdir)/.stamp
$(MAKE) -s do-profile-check-monolite ; \
else \
echo "*** The compiler '$(BOOTSTRAP_MCS)' doesn't appear to be usable." 1>&2; \
- echo "*** You need Mono version 2.4 or better installed to build MCS" 1>&2 ; \
+ echo "*** You need Mono version 2.10 or better installed to build MCS" 1>&2 ; \
echo "*** Check mono README for information on how to bootstrap a Mono installation." 1>&2 ; \
exit 1; fi; fi
diff --git a/mcs/class/Facades/System.Runtime.InteropServices/TypeForwarders.cs b/mcs/class/Facades/System.Runtime.InteropServices/TypeForwarders.cs
index 48a4e24b5f..060d929226 100644
--- a/mcs/class/Facades/System.Runtime.InteropServices/TypeForwarders.cs
+++ b/mcs/class/Facades/System.Runtime.InteropServices/TypeForwarders.cs
@@ -40,6 +40,8 @@
[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.COMException))]
[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComMemberType))]
[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComSourceInterfacesAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.IStream))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.STATSTG))]
[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.CriticalHandle))]
[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.CurrencyWrapper))]
//[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.CustomQueryInterfaceMode))]
@@ -76,4 +78,3 @@
[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.UnmanagedType))]
[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.VarEnum))]
[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.VariantWrapper))]
-
diff --git a/mcs/class/Makefile b/mcs/class/Makefile
index 1e604f9aae..b3d367cb2e 100644
--- a/mcs/class/Makefile
+++ b/mcs/class/Makefile
@@ -25,7 +25,7 @@ net_1_1_java_SUBDIRS = \
System.Runtime.Serialization.Formatters.Soap \
System.Runtime.Remoting
-common_dirs := \
+net_2_0_dirs := \
corlib \
System \
System.XML \
@@ -78,14 +78,11 @@ common_dirs := \
Mono.Cecil \
Mono.Cecil.Mdb \
Mono.Debugger.Soft \
- SystemWebTestShim
-
-net_2_0_dirs := \
+ SystemWebTestShim \
System.Xml.Linq \
System.Runtime.Serialization \
System.Data.DataSetExtensions \
System.Data.Linq \
- System.Web \
System.Web.Abstractions \
System.Web.Routing \
System.IdentityModel \
@@ -179,7 +176,6 @@ net_4_0_dirs := \
System.Xaml \
WindowsBase \
System.ServiceModel.Activation \
- System.ServiceModel \
System.ServiceModel.Routing \
System.ServiceModel.Discovery \
System.Runtime.Caching \
@@ -241,7 +237,7 @@ xbuild_4_0_dirs := \
$(xbuild_2_0_dirs) \
Microsoft.Build
-net_2_0_SUBDIRS := $(common_dirs) $(net_2_0_dirs) $(net_2_0_only_dirs) $(xbuild_2_0_dirs) aot-compiler
+net_2_0_SUBDIRS := $(net_2_0_dirs) $(net_2_0_only_dirs) $(xbuild_2_0_dirs) aot-compiler
monodroid_SUBDIRS := $(mobile_dirs) $(monodroid_dirs)
monotouch_SUBDIRS := $(mobile_dirs) $(monotouch_dirs)
monotouch_runtime_SUBDIRS := $(monotouch_runtime_dirs)
@@ -249,13 +245,13 @@ mobile_static_SUBDIRS := $(mobile_dirs)
mobile_SUBDIRS := $(mobile_dirs)
xammac_SUBDIRS := $(mobile_dirs) $(xammac_dirs)
net_3_5_SUBDIRS := $(xbuild_2_0_dirs)
-net_4_0_SUBDIRS := $(common_dirs) $(net_2_0_dirs) $(net_4_0_dirs) $(net_4_0_only_dirs) $(xbuild_4_0_dirs)
-net_4_5_SUBDIRS := $(common_dirs) $(net_2_0_dirs) $(net_4_0_dirs) $(net_4_5_dirs) $(xbuild_4_0_dirs) aot-compiler
+net_4_0_SUBDIRS := $(net_2_0_dirs) $(net_4_0_dirs) $(net_4_0_only_dirs) $(xbuild_4_0_dirs)
+net_4_5_SUBDIRS := $(net_2_0_dirs) $(net_4_0_dirs) $(net_4_5_dirs) $(xbuild_4_0_dirs) aot-compiler
xbuild_12_SUBDIRS := $(xbuild_4_0_dirs)
include ../build/rules.make
-SUBDIRS = $(common_dirs) $(net_2_0_dirs) $(net_2_0_only_dirs) $(mobile_dirs) $(monotouch_dirs) $(net_4_0_dirs) $(net_4_0_only_dirs) $(net_4_5_dirs)
+SUBDIRS = $(net_2_0_dirs) $(net_2_0_only_dirs) $(mobile_dirs) $(monotouch_dirs) $(net_4_0_dirs) $(net_4_0_only_dirs) $(net_4_5_dirs)
DIST_ONLY_SUBDIRS = dlr aot-compiler $(xbuild_4_0_dirs)
diff --git a/mcs/class/Managed.Windows.Forms/Makefile b/mcs/class/Managed.Windows.Forms/Makefile
index 7a7439b744..37a323899b 100644
--- a/mcs/class/Managed.Windows.Forms/Makefile
+++ b/mcs/class/Managed.Windows.Forms/Makefile
@@ -93,7 +93,10 @@ TEST_DISTFILES = \
Test/resources/32x32.ico \
Test/System.Resources/compat_1_1.resx \
Test/System.Resources/compat_2_0.resx \
- Test/System.Windows.Forms/bitmaps/a.png
+ Test/System.Windows.Forms/bitmaps/a.png \
+ Test/DummyAssembly/AnotherSerializable.cs \
+ Test/DummyAssembly/Convertable.cs \
+ Test/DummyAssembly/Properties/AssemblyInfo.cs \
EXTRA_DISTFILES = \
README System.Windows.Forms.dll.resources \
@@ -106,6 +109,11 @@ TEST_MCS_FLAGS = /r:System.Data.dll /r:System.Drawing.dll /r:Accessibility.dll -
-resource:Test/resources/32x32.ico,32x32.ico \
-nowarn:618,612
+DummyAssembly.dll:
+ $(CSCOMPILE) /target:library /out:$@ Test/DummyAssembly/AnotherSerializable.cs Test/DummyAssembly/Convertable.cs Test/DummyAssembly/Properties/AssemblyInfo.cs
+
+test-local: DummyAssembly.dll
+
include ../../build/library.make
TEST_HARNESS_EXCLUDES = -exclude=Interactive,NotWorking,ValueAdd,CAS,InetAccess
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingSource.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingSource.cs
index 3e928459ba..a16a996355 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingSource.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingSource.cs
@@ -207,6 +207,7 @@ namespace System.Windows.Forms {
private void OnParentCurrencyManagerChanged (object sender, EventArgs args)
{
// Essentially handles chained data sources (e.g. chained BindingSource)
+ ResetDataMemberIfInvalid ();
ResetList ();
}
@@ -349,6 +350,7 @@ namespace System.Windows.Forms {
DisconnectDataSourceEvents (datasource);
datasource = value;
+ ResetDataMemberIfInvalid ();
ConnectDataSourceEvents (datasource);
ResetList ();
@@ -454,6 +456,19 @@ namespace System.Windows.Forms {
}
}
+ void ResetDataMemberIfInvalid ()
+ {
+ if (datamember == String.Empty)
+ return;
+
+ // if dataMember doesn't refer to a valid property of dataSource, we need to reset it
+ var property = ListBindingHelper.GetListItemProperties (datasource).Find (datamember, true);
+ if (property == null) {
+ datamember = String.Empty;
+ OnDataMemberChanged (EventArgs.Empty);
+ }
+ }
+
// NOTE: Probably the parsing can be improved
void ProcessSortString (string sort)
{
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CurrencyManager.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CurrencyManager.cs
index 277e71c9c6..e69308f62f 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CurrencyManager.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CurrencyManager.cs
@@ -390,7 +390,8 @@ namespace System.Windows.Forms {
else if (e.NewIndex <= listposition) {
/* the deleted row was either the current one, or one earlier in the list.
Update the index and emit PositionChanged, CurrentChanged, and ItemChanged. */
- ChangeRecordState (listposition+1,
+ // FIXME: this looks wrong, shouldn't it be (listposition - 1) instead of e.NewIndex ?
+ ChangeRecordState (e.NewIndex,
false, false, e.NewIndex != listposition, false);
}
else {
@@ -412,7 +413,7 @@ namespace System.Windows.Forms {
}
else {
if (e.NewIndex <= listposition) {
- ChangeRecordState (e.NewIndex,
+ ChangeRecordState (listposition + 1,
false, false, false, false);
OnItemChanged (new ItemChangedEventArgs (-1));
OnListChanged (e);
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ImageListStreamer.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ImageListStreamer.cs
index a930aa9301..5fa129b4c0 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ImageListStreamer.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ImageListStreamer.cs
@@ -150,7 +150,7 @@ namespace System.Windows.Forms {
}
*/
- static byte [] header = new byte []{ 77, 83, 70, 116, 73, 76, 3, 0 };
+ static byte [] header = new byte []{ 77, 83, 70, 116, 73, 76, 1, 1 };
public void GetObjectData (SerializationInfo si, StreamingContext context)
{
MemoryStream stream = new MemoryStream ();
@@ -169,7 +169,7 @@ namespace System.Windows.Forms {
writer.Write ((ushort) (images [0].Width));
writer.Write ((ushort) (images [0].Height));
writer.Write (0xFFFFFFFF); //BackColor.ToArgb ()); //FIXME: should set the right one here.
- writer.Write ((ushort) 0x1009);
+ writer.Write ((ushort) 0x21);
for (int i = 0; i < 4; i++)
writer.Write ((short) -1);
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListView.cs.REMOVED.git-id b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListView.cs.REMOVED.git-id
index a5b0ee4eb6..2e108650fb 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListView.cs.REMOVED.git-id
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListView.cs.REMOVED.git-id
@@ -1 +1 @@
-c1b7d791f8d2974c14d91a11622fb822eee0dafa
\ No newline at end of file
+f7075e8ef8f7cfbc0c67a85dbedc54b114523b38
\ No newline at end of file
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/NumericUpDown.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/NumericUpDown.cs
index 5ffc23eb61..856137cb17 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/NumericUpDown.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/NumericUpDown.cs
@@ -109,7 +109,7 @@ namespace System.Windows.Forms {
hexadecimal = false;
increment = 1M;
maximum = 100M;
- minimum = 0.0M;
+ minimum = 0M;
thousands_separator = false;
Text = "0";
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUIX11.cs.REMOVED.git-id b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUIX11.cs.REMOVED.git-id
index d2abee0578..538b273725 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUIX11.cs.REMOVED.git-id
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUIX11.cs.REMOVED.git-id
@@ -1 +1 @@
-e05a093aac549755036f160867f3515bc78def96
\ No newline at end of file
+1f3af25846450af900f33b95ed551929392ee807
\ No newline at end of file
diff --git a/mcs/class/Managed.Windows.Forms/Test/DummyAssembly/AnotherSerializable.cs b/mcs/class/Managed.Windows.Forms/Test/DummyAssembly/AnotherSerializable.cs
new file mode 100644
index 0000000000..a6336ce275
--- /dev/null
+++ b/mcs/class/Managed.Windows.Forms/Test/DummyAssembly/AnotherSerializable.cs
@@ -0,0 +1,88 @@
+//
+// AnotherSerializable.cs : Serializable Class used to test types from other
+// assemblies for resources tests
+//
+// Author:
+// Gary Barnett (gary.barnett.mono@gmail.com)
+//
+// Copyright (C) Gary Barnett (2012)
+//
+//
+// 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.Runtime.Serialization;
+using System.IO;
+using System.Runtime.Serialization.Formatters.Binary;
+
+namespace DummyAssembly {
+ [SerializableAttribute]
+ public class AnotherSerializable : ISerializable {
+ public string name;
+ public string value;
+
+ public AnotherSerializable ()
+ {
+ }
+
+ public AnotherSerializable (string name, string value)
+ {
+ this.name = name;
+ this.value = value;
+ }
+
+ public AnotherSerializable (SerializationInfo info, StreamingContext ctxt)
+ {
+ name = (string) info.GetValue ("sername", typeof (string));
+ value = (String) info.GetValue ("servalue", typeof (string));
+ }
+
+ public AnotherSerializable (Stream stream)
+ {
+ BinaryFormatter bFormatter = new BinaryFormatter ();
+ AnotherSerializable deser = (AnotherSerializable) bFormatter.Deserialize (stream);
+ stream.Close ();
+
+ name = deser.name;
+ value = deser.value;
+ }
+
+ public void GetObjectData (SerializationInfo info, StreamingContext ctxt)
+ {
+ info.AddValue ("sername", name);
+ info.AddValue ("servalue", value);
+ }
+
+ public override string ToString ()
+ {
+ return String.Format ("name={0};value={1}", this.name, this.value);
+ }
+
+ public override bool Equals (object obj)
+ {
+ AnotherSerializable o = obj as AnotherSerializable;
+ if (o == null)
+ return false;
+ return this.name.Equals (o.name) && this.value.Equals (o.value);
+ }
+ }
+}
+
diff --git a/mcs/class/Managed.Windows.Forms/Test/DummyAssembly/Convertable.cs b/mcs/class/Managed.Windows.Forms/Test/DummyAssembly/Convertable.cs
new file mode 100644
index 0000000000..7f1ea03138
--- /dev/null
+++ b/mcs/class/Managed.Windows.Forms/Test/DummyAssembly/Convertable.cs
@@ -0,0 +1,119 @@
+//
+// Convertable.cs : Class with type converter used to test types from other
+// assemblies for resources tests
+//
+// Author:
+// Gary Barnett (gary.barnett.mono@gmail.com)
+//
+// Copyright (C) Gary Barnett (2012)
+//
+//
+// 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.Collections.Generic;
+using System.Text;
+using System.Runtime.Serialization.Formatters.Binary;
+using System.IO;
+using System.Runtime.Serialization;
+using System.ComponentModel;
+
+namespace DummyAssembly {
+
+ [SerializableAttribute]
+ [TypeConverter (typeof (ConvertableConverter))]
+ public class Convertable {
+ protected string name;
+ protected string value;
+
+ public Convertable ()
+ {
+ }
+
+ public Convertable (string name, string value)
+ {
+ this.name = name;
+ this.value = value;
+ }
+
+ public void GetObjectData (SerializationInfo info, StreamingContext ctxt)
+ {
+ info.AddValue ("sername", name);
+ info.AddValue ("servalue", value);
+ }
+
+ public override string ToString ()
+ {
+ return String.Format ("{0}\t{1}",name, value);
+ }
+
+ public override bool Equals (object obj)
+ {
+ Convertable o = obj as Convertable;
+ if (o == null)
+ return false;
+ return this.name.Equals (o.name) && this.value.Equals (o.value);
+ }
+ }
+
+ class ConvertableConverter : TypeConverter {
+ public ConvertableConverter ()
+ {
+ }
+
+ public override bool CanConvertFrom (ITypeDescriptorContext context, Type sourceType)
+ {
+ return sourceType == typeof (string);
+ }
+
+ public override bool CanConvertTo (ITypeDescriptorContext context, Type destinationType)
+ {
+ return destinationType == typeof (string);
+ }
+
+ public override object ConvertFrom (ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
+ {
+ if (value.GetType() != typeof (string))
+ throw new Exception ("value not string");
+
+ string serialised = (string) value;
+
+ string [] parts = serialised.Split ('\t');
+
+ if (parts.Length != 2)
+ throw new Exception ("string in incorrect format");
+
+ Convertable convertable = new Convertable (parts [0], parts [1]);
+ return convertable;
+ }
+
+ public override object ConvertTo (ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
+ {
+ if (destinationType != typeof (String)) {
+ return base.ConvertTo (context, culture, value, destinationType);
+ }
+
+ return ((Convertable) value).ToString ();
+ }
+ }
+
+}
+
diff --git a/mcs/class/Managed.Windows.Forms/Test/DummyAssembly/Properties/AssemblyInfo.cs b/mcs/class/Managed.Windows.Forms/Test/DummyAssembly/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000000..73e9fef7f1
--- /dev/null
+++ b/mcs/class/Managed.Windows.Forms/Test/DummyAssembly/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle ("DummyAssembly")]
+[assembly: AssemblyDescription ("")]
+[assembly: AssemblyConfiguration ("")]
+[assembly: AssemblyCompany ("")]
+[assembly: AssemblyProduct ("DummyAssembly")]
+[assembly: AssemblyCopyright ("")]
+[assembly: AssemblyTrademark ("")]
+[assembly: AssemblyCulture ("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible (false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid ("c80e062b-a918-4aa5-b62c-7455ca2c56d5")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion ("1.0.0.0")]
+[assembly: AssemblyFileVersion ("1.0.0.0")]
diff --git a/mcs/class/Managed.Windows.Forms/Test/System.Resources/ResXDataNodeTest.cs b/mcs/class/Managed.Windows.Forms/Test/System.Resources/ResXDataNodeTest.cs
index fb231e2634..4c6ba44c18 100644
--- a/mcs/class/Managed.Windows.Forms/Test/System.Resources/ResXDataNodeTest.cs
+++ b/mcs/class/Managed.Windows.Forms/Test/System.Resources/ResXDataNodeTest.cs
@@ -144,15 +144,14 @@ namespace MonoTests.System.Resources {
[Test]
public void WriteRead1 ()
{
- ResXResourceWriter rw = new ResXResourceWriter ("resx.resx");
serializable ser = new serializable ("aaaaa", "bbbbb");
ResXDataNode dn = new ResXDataNode ("test", ser);
dn.Comment = "comment";
- rw.AddResource (dn);
- rw.Close ();
+
+ string resXFile = GetResXFileWithNode (dn, "resx.resx");
bool found = false;
- ResXResourceReader rr = new ResXResourceReader ("resx.resx");
+ ResXResourceReader rr = new ResXResourceReader (resXFile);
rr.UseResXDataNodes = true;
IDictionaryEnumerator en = rr.GetEnumerator ();
while (en.MoveNext ()) {
@@ -224,7 +223,6 @@ namespace MonoTests.System.Resources {
ResXDataNode node = ((DictionaryEntry) en.Current).Value as ResXDataNode;
rr.Close ();
- File.Delete ("resx.resx");
Assert.IsNotNull (node,"#A1");
serializable o = node.GetValue ((AssemblyName []) null) as serializable;
@@ -245,7 +243,6 @@ namespace MonoTests.System.Resources {
ResXDataNode node = ((DictionaryEntry) en.Current).Value as ResXDataNode;
rr.Close ();
- File.Delete ("resx.resx");
Assert.IsNotNull (node, "#A1");
object o = node.GetValue ((AssemblyName []) null);
diff --git a/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ClipboardTest.cs b/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ClipboardTest.cs
index f90a1b98c1..198dcda427 100644
--- a/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ClipboardTest.cs
+++ b/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ClipboardTest.cs
@@ -104,6 +104,7 @@ namespace MonoTests.System.Windows.Forms
}
[Test]
+ [Category ("NotWorking")] // Doesn't work under Xvfb.
public void DataRemainsOnClipboard_Xamarin4959 ()
{
// Compile an app that puts something on the clipboard
diff --git a/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/DataBindingTests.cs b/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/DataBindingTests.cs
index e0261dc21b..aef76e0777 100644
--- a/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/DataBindingTests.cs
+++ b/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/DataBindingTests.cs
@@ -172,6 +172,8 @@ namespace MonoTests.System.Windows.Forms.DataBinding
row.Delete ();
+ Assert.AreEqual (-1, cm.Position);
+
// Console.WriteLine (event_log);
Assert.AreEqual (
@@ -221,6 +223,8 @@ namespace MonoTests.System.Windows.Forms.DataBinding
row.Delete ();
+ Assert.AreEqual (0, cm.Position);
+
Console.WriteLine (event_log);
Assert.AreEqual (
@@ -273,6 +277,8 @@ namespace MonoTests.System.Windows.Forms.DataBinding
row.Delete ();
+ Assert.AreEqual (0, cm.Position);
+
Console.WriteLine (event_log);
#if WITH_BINDINGS
@@ -323,6 +329,8 @@ namespace MonoTests.System.Windows.Forms.DataBinding
row.Delete ();
+ Assert.AreEqual (0, cm.Position);
+
Console.WriteLine (event_log);
Assert.AreEqual (
@@ -379,6 +387,8 @@ namespace MonoTests.System.Windows.Forms.DataBinding
DataRow newrow = dataSet1.Tables[0].NewRow ();
dataSet1.Tables[0].Rows.Add(newrow);
+ Assert.AreEqual (0, cm.Position);
+
Console.WriteLine (event_log);
Assert.AreEqual (
@@ -434,6 +444,8 @@ namespace MonoTests.System.Windows.Forms.DataBinding
newrow = dataSet1.Tables[0].NewRow ();
dataSet1.Tables[0].Rows.Add(newrow);
+ Assert.AreEqual (0, cm.Position);
+
Console.WriteLine (event_log);
#if WITH_BINDINGS
@@ -489,6 +501,8 @@ namespace MonoTests.System.Windows.Forms.DataBinding
newrow = dataSet1.Tables[0].NewRow ();
dataSet1.Tables[0].Rows.InsertAt(newrow, 0);
+ Assert.AreEqual (2, cm.Position);
+
Console.WriteLine (event_log);
Assert.AreEqual (
@@ -547,6 +561,8 @@ namespace MonoTests.System.Windows.Forms.DataBinding
newrow = dataSet1.Tables[0].NewRow ();
dataSet1.Tables[0].Rows.InsertAt(newrow, 1);
+ Assert.AreEqual (2, cm.Position);
+
Console.WriteLine (event_log);
Assert.AreEqual (
@@ -596,6 +612,8 @@ namespace MonoTests.System.Windows.Forms.DataBinding
dataSet1.Tables[0].Columns.Add();
+ Assert.AreEqual (-1, cm.Position);
+
Console.WriteLine (event_log);
#if NET_2_0
@@ -635,6 +653,8 @@ namespace MonoTests.System.Windows.Forms.DataBinding
dataSet1.Tables[0].Columns.Remove(dataSet1.Tables[0].Columns[1]);
+ Assert.AreEqual (-1, cm.Position);
+
Console.WriteLine (event_log);
Assert.AreEqual ("0: MetaDataChanged\n", event_log, "2");
@@ -672,6 +692,8 @@ namespace MonoTests.System.Windows.Forms.DataBinding
dataSet1.Tables[0].Columns.Remove(dataSet1.Tables[0].Columns[0]);
+ Assert.AreEqual (-1, cm.Position);
+
Console.WriteLine (event_log);
Assert.AreEqual ("0: MetaDataChanged\n", event_log, "3");
@@ -717,6 +739,8 @@ namespace MonoTests.System.Windows.Forms.DataBinding
dataSet1.Tables[0].Columns[0].ColumnName = "new name";
+ Assert.AreEqual (-1, cm.Position);
+
Console.WriteLine (event_log);
Assert.AreEqual ("0: MetaDataChanged\n", event_log, "3");
@@ -775,6 +799,8 @@ namespace MonoTests.System.Windows.Forms.DataBinding
row[column_name] = "hi";
row.EndEdit ();
+ Assert.AreEqual (0, cm.Position);
+
Console.WriteLine (event_log);
Assert.AreEqual (
@@ -834,6 +860,8 @@ namespace MonoTests.System.Windows.Forms.DataBinding
row[column_name] = "hi";
cm.CancelCurrentEdit ();
+ Assert.AreEqual (0, cm.Position);
+
Console.WriteLine (event_log);
Assert.AreEqual ("0: ItemChanged (index = 0)\n", event_log, "2");
@@ -875,6 +903,8 @@ namespace MonoTests.System.Windows.Forms.DataBinding
DataRowView row = (DataRowView)cm.Current;
row.Delete ();
+ Assert.AreEqual (-1, cm.Position);
+
Console.WriteLine (event_log);
Assert.AreEqual (
diff --git a/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/FormEventTest.cs b/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/FormEventTest.cs
index 9a7e9bcfb4..9712812c29 100644
--- a/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/FormEventTest.cs
+++ b/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/FormEventTest.cs
@@ -642,6 +642,7 @@ namespace MonoTests.System.Windows.Forms
private static int oipt_t1 = 0;
private static int oipt_t2 = 0;
[Test]
+ [NUnit.Framework.Category ("NotWorking")]
public void OneIdlePerThread () {
Thread t = Thread.CurrentThread;
oipt_t1 = t.ManagedThreadId;
diff --git a/mcs/class/Managed.Windows.Forms/resources/keyboards.resx.REMOVED.git-id b/mcs/class/Managed.Windows.Forms/resources/keyboards.resx.REMOVED.git-id
index ff2386e148..52c6811b04 100644
--- a/mcs/class/Managed.Windows.Forms/resources/keyboards.resx.REMOVED.git-id
+++ b/mcs/class/Managed.Windows.Forms/resources/keyboards.resx.REMOVED.git-id
@@ -1 +1 @@
-f6f5fadb7df800a00159edd72fc76b254c96b3a9
\ No newline at end of file
+4fac9f436ca5607cef5cc90e693448cbee76000e
\ No newline at end of file
diff --git a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConditionParser.cs b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConditionParser.cs
index ec538abc29..b5e2e809ae 100644
--- a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConditionParser.cs
+++ b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConditionParser.cs
@@ -182,7 +182,7 @@ namespace Microsoft.Build.BuildEngine {
e = new ConditionFactorExpression (token);
} else if (token.Type == TokenType.Item || token.Type == TokenType.Property
|| token.Type == TokenType.Metadata) {
- e = ParseReferenceExpression (token.Value);
+ e = ParseReferenceExpression (token.Value [0]);
} else if (token.Type == TokenType.Not) {
e = ParseNotExpression ();
} else
@@ -224,21 +224,33 @@ namespace Microsoft.Build.BuildEngine {
}
//@prefix: @ or $
- ConditionExpression ParseReferenceExpression (string prefix)
+ ConditionExpression ParseReferenceExpression (char prefix)
{
- StringBuilder sb = new StringBuilder ();
-
- string ref_type = prefix [0] == '$' ? "a property" : "an item list";
int token_pos = tokenizer.Token.Position;
+ string ref_type = prefix == '$' ? "a property" : "an item list";
IsAtToken (TokenType.LeftParen, String.Format (
"Expected {0} at position {1} in condition \"{2}\". Missing opening parantheses after the '{3}'.",
ref_type, token_pos, conditionStr, prefix));
- tokenizer.GetNextToken ();
+
+ if (prefix == '$') {
+ //
+ // Tjhe scan should consider quoted parenthesis but it breaks on .net as well
+ // we are bug compatible
+ //
+ tokenizer.ScanForClosingParens ();
+ } else {
+ tokenizer.GetNextToken ();
+ }
+
+ if (tokenizer.IsEOF ())
+ throw new ExpressionParseException ("Missing closing parenthesis in condition " + conditionStr);
+
+ StringBuilder sb = new StringBuilder ();
sb.AppendFormat ("{0}({1}", prefix, tokenizer.Token.Value);
tokenizer.GetNextToken ();
- if (prefix == "@" && tokenizer.Token.Type == TokenType.Transform) {
+ if (prefix == '@' && tokenizer.Token.Type == TokenType.Transform) {
tokenizer.GetNextToken ();
sb.AppendFormat ("->'{0}'", tokenizer.Token.Value);
@@ -250,9 +262,7 @@ namespace Microsoft.Build.BuildEngine {
}
}
- IsAtToken (TokenType.RightParen, String.Format (
- "Expected {0} at position {1} in condition \"{2}\". Missing closing parantheses'.",
- ref_type, token_pos, conditionStr, prefix));
+ IsAtToken (TokenType.RightParen, "Missing closing parenthesis in condition " + conditionStr);
tokenizer.GetNextToken ();
sb.Append (")");
diff --git a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConditionTokenizer.cs b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConditionTokenizer.cs
index 29a4aba628..d9ee74475d 100644
--- a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConditionTokenizer.cs
+++ b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConditionTokenizer.cs
@@ -257,6 +257,29 @@ namespace Microsoft.Build.BuildEngine {
} else
throw new ExpressionParseException (String.Format ("Invalid token: {0}", ch));
}
+
+ public void ScanForClosingParens (int parensCounter = 1)
+ {
+ tokenPosition = position;
+ int start = position;
+ int ch;
+ while ((ch = ReadChar ()) >= 0) {
+ switch (ch) {
+ case ')':
+ if (--parensCounter == 0) {
+ --position;
+ token = new Token (inputString.Substring (start, position - start), TokenType.String, tokenPosition);
+ return;
+ }
+ break;
+ case '(':
+ ++parensCounter;
+ break;
+ }
+ }
+
+ token = new Token (null, TokenType.EOF, tokenPosition);
+ }
public int TokenPosition {
get { return tokenPosition; }
diff --git a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Expression.cs b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Expression.cs
index 655224f89a..ccfc0fa3a0 100644
--- a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Expression.cs
+++ b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Expression.cs
@@ -55,6 +55,14 @@ namespace Microsoft.Build.BuildEngine {
internal class Expression {
+ enum TokenKind
+ {
+ OpenParens,
+ CloseParens,
+ Dot,
+ End
+ }
+
ExpressionCollection expressionCollection;
static Regex item_regex;
@@ -232,6 +240,7 @@ namespace Microsoft.Build.BuildEngine {
pos += 2;
int start = pos;
int end = 0;
+ bool requires_closing_parens = true;
var ch = text [pos];
if ((ch == 'r' || ch == 'R') && text.Substring (pos + 1).StartsWith ("egistry:", StringComparison.OrdinalIgnoreCase)) {
@@ -273,6 +282,7 @@ namespace Microsoft.Build.BuildEngine {
// Simple property reference $(Foo)
//
phase.Add (new PropertyReference (name));
+ requires_closing_parens = false;
} else {
end = 0;
}
@@ -287,6 +297,14 @@ namespace Microsoft.Build.BuildEngine {
pos = end;
}
+
+ if (requires_closing_parens) {
+ end = text.IndexOf (')', pos);
+ if (end < 0)
+ end = 0;
+ else
+ pos = end + 1;
+ }
}
end = text.IndexOf ("$(", pos, StringComparison.Ordinal);
@@ -493,70 +511,71 @@ namespace Microsoft.Build.BuildEngine {
static MemberInvocationReference ParseInvocation (string text, ref int p, Type type, IReference instance)
{
- var open_parens = text.IndexOf ('(', p);
- string name;
- int end;
- List args;
+ TokenKind token;
+ MemberInvocationReference mir = null;
- //
- // Is it method or property
- //
- if (open_parens > 0) {
- name = text.Substring (p, open_parens - p);
+ while (true) {
+ int prev = p;
+ token = ScanName (text, ref p);
+ var name = text.Substring (prev, p - prev).TrimEnd ();
- //
- // It can be instance method on static property
- //
- if (name.IndexOf ('.') > 0) {
- var names = name.Split ('.');
- int i;
- for (i = 0; i < names.Length - 1; ++i) {
- instance = new MemberInvocationReference (type, names [i]) {
- Instance = instance
- };
- }
+ switch (token) {
+ case TokenKind.Dot:
+ case TokenKind.OpenParens:
+ break;
+ case TokenKind.CloseParens:
+ return new MemberInvocationReference (type, name) {
+ Instance = instance
+ };
- type = null;
- name = names [i];
- }
- ++open_parens;
- args = ParseArguments (text, ref open_parens);
- end = text.IndexOf (')', open_parens);
- } else {
- end = text.IndexOf (')', p);
- if (end < 0)
- throw new InvalidProjectFileException (string.Format ("Invalid static method invocation syntax '{0}'", text.Substring (p)));
+ case TokenKind.End:
+ if (mir == null || name.Length != 0)
+ throw new InvalidProjectFileException (string.Format ("Invalid static method invocation syntax '{0}'", text.Substring (p)));
- name = text.Substring (p, end - p);
-
- //
- // It can be instance member on static property
- //
- if (name.IndexOf ('.') > 0) {
- var names = name.Split ('.');
- int i;
- for (i = 0; i < names.Length - 1; ++i) {
- instance = new MemberInvocationReference (type, names [i]) {
- Instance = instance
- };
- }
-
- type = null;
- name = names [i];
+ return mir;
+ default:
+ throw new NotImplementedException ();
}
- args = null;
+ instance = mir = new MemberInvocationReference (type, name) {
+ Instance = instance
+ };
+
+ if (type != null) {
+ if (!IsMethodAllowed (type, name))
+ throw new InvalidProjectFileException (string.Format ("The function '{0}' on type '{1}' has not been enabled for execution", name, type.FullName));
+
+ type = null;
+ }
+
+ if (token == TokenKind.OpenParens) {
+ ++p;
+ mir.Arguments = ParseArguments (text, ref p);
+ }
+
+ if (p < text.Length && text [p] == '.') {
+ ++p;
+ continue;
+ }
+
+ return mir;
+ }
+ }
+
+ static TokenKind ScanName (string text, ref int p)
+ {
+ for (; p < text.Length; ++p) {
+ switch (text [p]) {
+ case '(':
+ return TokenKind.OpenParens;
+ case '.':
+ return TokenKind.Dot;
+ case ')':
+ return TokenKind.CloseParens;
+ }
}
- name = name.TrimEnd ();
- if (!IsMethodAllowed (type, name))
- throw new InvalidProjectFileException (string.Format ("The function '{0}' on type '{1}' has not been enabled for execution", name, type.FullName));
-
- p = end + 1;
- return new MemberInvocationReference (type, name) {
- Arguments = args,
- Instance = instance
- };
+ return TokenKind.End;
}
ArrayList SplitMetadata (string text)
diff --git a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Import.cs b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Import.cs
index 351aea0208..b4d996faa9 100644
--- a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Import.cs
+++ b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Import.cs
@@ -274,7 +274,11 @@ namespace Microsoft.Build.BuildEngine {
continue;
if (!Directory.Exists (extn_path)) {
- project.ParentEngine.LogMessage (MessageImportance.Low, "Extension path '{0}' not found, ignoring.", extn_path);
+ if (extn_path != DotConfigExtensionsPath)
+ project.ParentEngine.LogMessage (
+ MessageImportance.Low,
+ "Extension path '{0}' not found, ignoring.",
+ extn_path);
continue;
}
diff --git a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/MemberInvocationReference.cs b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/MemberInvocationReference.cs
index ada57788f2..6430992fba 100644
--- a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/MemberInvocationReference.cs
+++ b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/MemberInvocationReference.cs
@@ -63,10 +63,16 @@ namespace Microsoft.Build.BuildEngine
{
var flags = BindingFlags.IgnoreCase | BindingFlags.Public;
object target;
+ string member_name = name;
if (Instance == null) {
target = null;
- flags |= BindingFlags.Static;
+ if (string.Equals (member_name, "new", StringComparison.OrdinalIgnoreCase)) {
+ member_name = ConstructorInfo.ConstructorName;
+ flags |= BindingFlags.CreateInstance | BindingFlags.Instance;
+ } else {
+ flags |= BindingFlags.Static;
+ }
} else {
var mir = Instance as MemberInvocationReference;
if (mir != null) {
@@ -91,14 +97,14 @@ namespace Microsoft.Build.BuildEngine
} else {
flags |= BindingFlags.InvokeMethod;
ExpandArguments (project, options);
- args = PrepareMethodArguments (flags);
+ args = PrepareMethodArguments (member_name, flags);
if (args == null)
throw new InvalidProjectFileException (string.Format ("Method '{0}({1})' arguments cannot be evaluated'", name, string.Join (", ", Arguments.ToArray ())));
}
object value;
try {
- value = type.InvokeMember (name, flags, null, target, args, CultureInfo.InvariantCulture);
+ value = type.InvokeMember (member_name, flags, null, target, args, CultureInfo.InvariantCulture);
} catch (MissingFieldException) {
//
// It can be field/constant instead of a property
@@ -106,7 +112,7 @@ namespace Microsoft.Build.BuildEngine
if (args == null && Instance == null) {
flags &= ~BindingFlags.GetProperty;
flags |= BindingFlags.GetField;
- value = type.InvokeMember (name, flags, null, null, null, CultureInfo.InvariantCulture);
+ value = type.InvokeMember (member_name, flags, null, null, null, CultureInfo.InvariantCulture);
} else {
throw;
}
@@ -132,9 +138,9 @@ namespace Microsoft.Build.BuildEngine
}
}
- object[] PrepareMethodArguments (BindingFlags flags)
+ object[] PrepareMethodArguments (string name, BindingFlags flags)
{
- var candidates = type.GetMember (name, MemberTypes.Method, flags);
+ var candidates = type.GetMember (name, MemberTypes.Method | MemberTypes.Constructor, flags);
object[] args = null;
ParameterInfo[] best = null;
foreach (MethodBase candidate in candidates) {
diff --git a/mcs/class/Microsoft.Build.Engine/Test/various/Conditions.cs b/mcs/class/Microsoft.Build.Engine/Test/various/Conditions.cs
index 51c3da6cfb..c3c8dacabc 100644
--- a/mcs/class/Microsoft.Build.Engine/Test/various/Conditions.cs
+++ b/mcs/class/Microsoft.Build.Engine/Test/various/Conditions.cs
@@ -357,6 +357,24 @@ namespace MonoTests.Microsoft.Build.BuildEngine.Various {
Assert.IsNull (proj.EvaluatedProperties ["A"], "A1");
}
+ [Test]
+ public void TestCondition_References ()
+ {
+ Engine engine = new Engine (Consts.BinPath);
+ Project proj = engine.CreateNewProject ();
+
+ string documentString = @"
+
+
+ valid
+
+
+ ";
+
+ proj.LoadXml (documentString);
+
+ Assert.AreEqual ("valid", proj.GetEvaluatedProperty ("A"), "#1");
+ }
[Test]
public void TestHasTrailingSlash1 ()
diff --git a/mcs/class/Microsoft.Build.Engine/Test/various/Properties.cs b/mcs/class/Microsoft.Build.Engine/Test/various/Properties.cs
index b45bc39228..795a712306 100644
--- a/mcs/class/Microsoft.Build.Engine/Test/various/Properties.cs
+++ b/mcs/class/Microsoft.Build.Engine/Test/various/Properties.cs
@@ -175,6 +175,22 @@ namespace MonoTests.Microsoft.Build.BuildEngine.Various {
Assert.AreEqual (DateTime.Now.Year.ToString (), proj.GetEvaluatedProperty ("Prop1"), "#1");
}
+ [Test]
+ public void InstanceMembersOnStaticMethod ()
+ {
+ string documentString = @"
+
+
+ $([System.String]::Concat('a', 'bb', 'c').Length.GetHashCode ())
+
+
+
+ ";
+
+ proj.LoadXml (documentString);
+ Assert.AreEqual (4.GetHashCode ().ToString (), proj.GetEvaluatedProperty ("Prop1"), "#1");
+ }
+
[Test]
public void MSBuildPropertyFunctions ()
{
@@ -190,6 +206,23 @@ namespace MonoTests.Microsoft.Build.BuildEngine.Various {
proj.LoadXml (documentString);
Assert.AreEqual ("6.6", proj.GetEvaluatedProperty ("Prop1"), "#1");
- }
+ }
+
+ [Test]
+ public void Constructor ()
+ {
+ string documentString = @"
+
+
+ 0.6
+ 6
+ $([System.String]::new('value').EndsWith ('ue'))
+
+
+ ";
+
+ proj.LoadXml (documentString);
+ Assert.AreEqual ("True", proj.GetEvaluatedProperty ("Prop1"), "#1");
+ }
}
}
diff --git a/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/CommandLineBuilder.cs b/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/CommandLineBuilder.cs
index c50ddf774c..1a8fac12b7 100644
--- a/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/CommandLineBuilder.cs
+++ b/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/CommandLineBuilder.cs
@@ -328,8 +328,13 @@ namespace Microsoft.Build.Utilities
}
}
}
-
- protected void AppendTextUnquoted (string textToAppend)
+
+#if NET_4_0
+ public
+#else
+ protected
+#endif
+ void AppendTextUnquoted (string textToAppend)
{
commandLine.Append (textToAppend);
}
diff --git a/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/ToolLocationHelper.cs b/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/ToolLocationHelper.cs
index 7717a1f9ee..f3aa310c09 100644
--- a/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/ToolLocationHelper.cs
+++ b/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/ToolLocationHelper.cs
@@ -190,9 +190,9 @@ namespace Microsoft.Build.Utilities
string targetFrameworkProfile)
{
var path = Path.Combine (xbuildFxDir, targetFrameworkIdentifier);
- if (targetFrameworkVersion != null) {
+ if (!string.IsNullOrEmpty (targetFrameworkVersion)) {
path = Path.Combine (path, targetFrameworkVersion);
- if (targetFrameworkProfile != null)
+ if (!string.IsNullOrEmpty (targetFrameworkProfile))
path = Path.Combine (path, "Profile", targetFrameworkProfile);
}
if (!Directory.Exists (path))
@@ -200,7 +200,6 @@ namespace Microsoft.Build.Utilities
var flist = Path.Combine (path, "RedistList", "FrameworkList.xml");
if (!File.Exists (flist))
return null;
-
var xml = XmlReader.Create (flist);
xml.MoveToContent ();
var targetFxDir = xml.GetAttribute ("TargetFrameworkDirectory");
diff --git a/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities_test.dll.sources b/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities_test.dll.sources
index b1a3758e98..4e2248a2d4 100644
--- a/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities_test.dll.sources
+++ b/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities_test.dll.sources
@@ -2,4 +2,5 @@ Microsoft.Build.Utilities/CommandLineBuilderTest.cs
Microsoft.Build.Utilities/LoggerTest.cs
Microsoft.Build.Utilities/TaskItemTest.cs
Microsoft.Build.Utilities/TaskLoggingHelperTest.cs
+Microsoft.Build.Utilities/ToolLocationHelperTest.cs
Microsoft.Build.Utilities/ToolTaskTest.cs
diff --git a/mcs/class/Microsoft.Build.Utilities/Test/Microsoft.Build.Utilities/ToolLocationHelperTest.cs b/mcs/class/Microsoft.Build.Utilities/Test/Microsoft.Build.Utilities/ToolLocationHelperTest.cs
new file mode 100644
index 0000000000..fbb567d282
--- /dev/null
+++ b/mcs/class/Microsoft.Build.Utilities/Test/Microsoft.Build.Utilities/ToolLocationHelperTest.cs
@@ -0,0 +1,21 @@
+#if NET_4_0
+using System;
+using NUnit.Framework;
+using Microsoft.Build.Utilities;
+
+namespace MonoTests.Microsoft.Build.Utilities
+{
+ [TestFixture]
+ public class ToolLocationHelperTest
+ {
+ [Test]
+ [Category ("NotWorking")] // this test needs extra xbuild testing settings, as the target framework path is different.
+ public void GetPathToStandardLibraries ()
+ {
+ Assert.IsTrue (!string.IsNullOrEmpty (ToolLocationHelper.GetPathToStandardLibraries (".NETFramework", "v4.0", null)), "std path");
+ Assert.IsTrue (!string.IsNullOrEmpty (ToolLocationHelper.GetPathToStandardLibraries (".NETFramework", "v4.0", string.Empty)), "empty Profile path");
+ }
+ }
+}
+
+#endif
diff --git a/mcs/class/Microsoft.Build/Microsoft.Build.Construction/ProjectRootElement.cs b/mcs/class/Microsoft.Build/Microsoft.Build.Construction/ProjectRootElement.cs
index d7d5d77249..c9bcf5cdda 100644
--- a/mcs/class/Microsoft.Build/Microsoft.Build.Construction/ProjectRootElement.cs
+++ b/mcs/class/Microsoft.Build/Microsoft.Build.Construction/ProjectRootElement.cs
@@ -533,6 +533,8 @@ namespace Microsoft.Build.Construction
var item = CreateItemGroupElement ();
AppendChild (item);
return item;
+ case "ImportGroup":
+ return AddImportGroup ();
case "Import":
return AddImport (null);
case "Target":
diff --git a/mcs/class/Microsoft.Build/Microsoft.Build.Evaluation/ProjectCollection.cs b/mcs/class/Microsoft.Build/Microsoft.Build.Evaluation/ProjectCollection.cs
index 4c77665733..4170fa0025 100644
--- a/mcs/class/Microsoft.Build/Microsoft.Build.Evaluation/ProjectCollection.cs
+++ b/mcs/class/Microsoft.Build/Microsoft.Build.Evaluation/ProjectCollection.cs
@@ -494,6 +494,11 @@ namespace Microsoft.Build.Evaluation
});
yield return create ("MSBuildToolsPath", () => toolset.ToolsPath);
yield return create ("MSBuildToolsVersion", () => toolset.ToolsVersion);
+
+ // This is an implementation specific special property for this Microsoft.Build.dll to differentiate
+ // the build from Microsoft.Build.Engine.dll. It is significantly used in some *.targets file we share
+ // between old and new build engine.
+ yield return create ("MonoUseMicrosoftBuildDll", () => "True");
}
// These are required for reserved property, represents dynamically changing property values.
diff --git a/mcs/class/Microsoft.Build/Microsoft.Build.Execution/ProjectInstance.cs b/mcs/class/Microsoft.Build/Microsoft.Build.Execution/ProjectInstance.cs
index cb6badde21..00d9802134 100644
--- a/mcs/class/Microsoft.Build/Microsoft.Build.Execution/ProjectInstance.cs
+++ b/mcs/class/Microsoft.Build/Microsoft.Build.Execution/ProjectInstance.cs
@@ -164,7 +164,7 @@ namespace Microsoft.Build.Execution
// FIXME: this is kind of workaround for unavoidable issue that PLATFORM=* is actually given
// on some platforms and that prevents setting default "PLATFORM=AnyCPU" property.
if (!string.Equals ("PLATFORM", (string) p.Key, StringComparison.OrdinalIgnoreCase))
- this.properties [(string) p.Key] = new ProjectPropertyInstance ((string) p.Key, false, (string) p.Value);
+ this.properties [(string) p.Key] = new ProjectPropertyInstance ((string) p.Key, true, (string) p.Value);
foreach (var p in global_properties)
this.properties [p.Key] = new ProjectPropertyInstance (p.Key, false, p.Value);
var tools = projects.GetToolset (tools_version) ?? projects.GetToolset (projects.DefaultToolsVersion);
@@ -256,7 +256,7 @@ namespace Microsoft.Build.Execution
void EvaluateItems (ProjectRootElement xml, IEnumerable elements)
{
- foreach (var child in elements) {
+ foreach (var child in elements.Reverse ()) {
var ige = child as ProjectItemGroupElement;
if (ige != null) {
foreach (var p in ige.Items) {
@@ -435,6 +435,7 @@ namespace Microsoft.Build.Execution
var parameters = new BuildParameters (projects) {
ForwardingLoggers = remoteLoggers,
Loggers = loggers,
+ DefaultToolsVersion = projects.DefaultToolsVersion,
};
var requestData = new BuildRequestData (this, targets ?? DefaultTargets.ToArray ());
var result = manager.Build (parameters, requestData);
diff --git a/mcs/class/Microsoft.Build/Microsoft.Build.Internal/BuildEngine4.cs b/mcs/class/Microsoft.Build/Microsoft.Build.Internal/BuildEngine4.cs
index 4540fa0f31..4dc8b32c94 100644
--- a/mcs/class/Microsoft.Build/Microsoft.Build.Internal/BuildEngine4.cs
+++ b/mcs/class/Microsoft.Build/Microsoft.Build.Internal/BuildEngine4.cs
@@ -37,6 +37,7 @@ using Microsoft.Build.Exceptions;
using System.Globalization;
using Microsoft.Build.Construction;
using Microsoft.Build.Internal.Expressions;
+using System.Xml;
namespace Microsoft.Build.Internal
{
@@ -121,17 +122,23 @@ namespace Microsoft.Build.Internal
try {
- var initialPropertiesFormatted = "Initial Properties:\n" + string.Join (Environment.NewLine, project.Properties.OrderBy (p => p.Name).Select (p => string.Format ("{0} = {1}", p.Name, p.EvaluatedValue)).ToArray ());
- LogMessageEvent (new BuildMessageEventArgs (initialPropertiesFormatted, null, null, MessageImportance.Low));
+ var initialGlobalPropertiesFormatted = "Initial Global Properties:\n" + string.Join (Environment.NewLine, project.Properties.OrderBy (p => p.Name).Where (p => p.IsImmutable).Select (p => string.Format ("{0} = {1}", p.Name, p.EvaluatedValue)).ToArray ());
+ LogMessageEvent (new BuildMessageEventArgs (initialGlobalPropertiesFormatted, null, null, MessageImportance.Low));
+ var initialProjectPropertiesFormatted = "Initial Project Properties:\n" + string.Join (Environment.NewLine, project.Properties.OrderBy (p => p.Name).Where (p => !p.IsImmutable).Select (p => string.Format ("{0} = {1}", p.Name, p.EvaluatedValue)).ToArray ());
+ LogMessageEvent (new BuildMessageEventArgs (initialProjectPropertiesFormatted, null, null, MessageImportance.Low));
var initialItemsFormatted = "Initial Items:\n" + string.Join (Environment.NewLine, project.Items.OrderBy (i => i.ItemType).Select (i => string.Format ("{0} : {1}", i.ItemType, i.EvaluatedInclude)).ToArray ());
LogMessageEvent (new BuildMessageEventArgs (initialItemsFormatted, null, null, MessageImportance.Low));
// null targets -> success. empty targets -> success(!)
+ foreach (var targetName in (request.ProjectInstance.InitialTargets).Where (t => t != null))
+ BuildTargetByName (targetName, args);
if (request.TargetNames == null)
- args.Result.OverallResult = BuildResultCode.Success;
+ args.Result.OverallResult = args.CheckCancel () ? BuildResultCode.Failure : args.Result.ResultsByTarget.Any (p => p.Value.ResultCode == TargetResultCode.Failure) ? BuildResultCode.Failure : BuildResultCode.Success;
else {
- foreach (var targetName in (args.TargetNames ?? request.TargetNames).Where (t => t != null))
- BuildTargetByName (targetName, args);
+ foreach (var targetName in (args.TargetNames ?? request.TargetNames).Where (t => t != null)) {
+ if (!BuildTargetByName (targetName, args))
+ break;
+ }
// FIXME: check .NET behavior, whether cancellation always results in failure.
args.Result.OverallResult = args.CheckCancel () ? BuildResultCode.Failure : args.Result.ResultsByTarget.Any (p => p.Value.ResultCode == TargetResultCode.Failure) ? BuildResultCode.Failure : BuildResultCode.Success;
@@ -253,6 +260,7 @@ namespace Microsoft.Build.Internal
var value = args.Project.ExpandString (p.Value);
project.SetProperty (p.Name, value);
}
+ continue;
}
var ii = child as ProjectItemGroupTaskInstance;
@@ -264,6 +272,7 @@ namespace Microsoft.Build.Internal
continue;
project.AddItem (item.ItemType, project.ExpandString (item.Include));
}
+ continue;
}
var task = child as ProjectTaskInstance;
@@ -275,7 +284,14 @@ namespace Microsoft.Build.Internal
}
if (!RunBuildTask (target, task, targetResult, args))
return false;
+ continue;
}
+
+ var onError = child as ProjectOnErrorInstance;
+ if (onError != null)
+ continue; // evaluated under catch clause.
+
+ throw new NotSupportedException (string.Format ("Unexpected Target element children \"{0}\"", child.GetType ()));
}
} catch (Exception ex) {
// fallback task specified by OnError element
@@ -452,7 +468,7 @@ namespace Microsoft.Build.Internal
}
public void SetMetadataValueLiteral (string metadataName, string metadataValue)
{
- metadata [metadataName] = ProjectCollection.Unescape (metadataValue);
+ metadata [metadataName] = WindowsCompatibilityExtensions.NormalizeFilePath (ProjectCollection.Unescape (metadataValue));
}
public IDictionary CloneCustomMetadataEscaped ()
{
@@ -490,7 +506,7 @@ namespace Microsoft.Build.Internal
}
public void SetMetadata (string metadataName, string metadataValue)
{
- metadata [metadataName] = metadataValue;
+ metadata [metadataName] = WindowsCompatibilityExtensions.NormalizeFilePath (metadataValue);
}
public string ItemSpec { get; set; }
public int MetadataCount {
@@ -574,13 +590,16 @@ namespace Microsoft.Build.Internal
// To NOT reuse this IBuildEngine instance for different build, we create another BuildManager and BuildSubmisson and then run it.
public bool BuildProjectFile (string projectFileName, string[] targetNames, IDictionary globalProperties, IDictionary targetOutputs, string toolsVersion)
{
+ toolsVersion = string.IsNullOrEmpty (toolsVersion) ? project.ToolsVersion : toolsVersion;
var globalPropertiesThatMakeSense = new Dictionary ();
foreach (DictionaryEntry p in globalProperties)
globalPropertiesThatMakeSense [(string) p.Key] = (string) p.Value;
- var result = new BuildManager ().Build (this.submission.BuildManager.OngoingBuildParameters.Clone (), new BuildRequestData (projectFileName, globalPropertiesThatMakeSense, toolsVersion, targetNames, null));
- foreach (var p in result.ResultsByTarget)
- targetOutputs [p.Key] = p.Value.Items;
- return result.OverallResult == BuildResultCode.Success;
+ var projectToBuild = new ProjectInstance (ProjectRootElement.Create (XmlReader.Create (projectFileName)), globalPropertiesThatMakeSense, toolsVersion, Projects);
+ IDictionary outs;
+ var ret = projectToBuild.Build (targetNames ?? new string [] {"Build"}, Projects.Loggers, out outs);
+ foreach (var p in outs)
+ targetOutputs [p.Key] = p.Value.Items ?? new ITaskItem [0];
+ return ret;
}
public bool BuildProjectFilesInParallel (string[] projectFileNames, string[] targetNames, IDictionary[] globalProperties, IDictionary[] targetOutputsPerProject, string[] toolsVersion, bool useResultsCache, bool unloadProjectsOnCompletion)
diff --git a/mcs/class/Microsoft.Build/Microsoft.Build.Internal/ExpressionConstructs.cs b/mcs/class/Microsoft.Build/Microsoft.Build.Internal/ExpressionConstructs.cs
index 587db74962..6cd0b1670e 100644
--- a/mcs/class/Microsoft.Build/Microsoft.Build.Internal/ExpressionConstructs.cs
+++ b/mcs/class/Microsoft.Build/Microsoft.Build.Internal/ExpressionConstructs.cs
@@ -212,6 +212,16 @@ namespace Microsoft.Build.Internal.Expressions
get { return string.Format ("%([{0}].[{1}])", ItemType, Metadata); }
}
}
+
+ partial class QuotedExpression : Expression
+ {
+ public char QuoteChar { get; set; }
+ public ExpressionList Contents { get; set; }
+
+ public override string ExpressionString {
+ get { return QuoteChar + string.Concat (Contents.Select (e => e.ExpressionString)).Replace (QuoteChar.ToString (), "\\" + QuoteChar) + QuoteChar; }
+ }
+ }
partial class StringLiteral : Expression
{
diff --git a/mcs/class/Microsoft.Build/Microsoft.Build.Internal/ExpressionEvaluator.cs b/mcs/class/Microsoft.Build/Microsoft.Build.Internal/ExpressionEvaluator.cs
index 696447c884..7fbd1cf554 100644
--- a/mcs/class/Microsoft.Build/Microsoft.Build.Internal/ExpressionEvaluator.cs
+++ b/mcs/class/Microsoft.Build/Microsoft.Build.Internal/ExpressionEvaluator.cs
@@ -346,12 +346,12 @@ namespace Microsoft.Build.Internal.Expressions
var args = Access.Arguments.Select (e => e.EvaluateAsObject (context)).ToArray ();
var method = FindMethod (type, Access.Name.Name, args);
if (method == null)
- throw new InvalidProjectFileException (Location, string.Format ("access to undefined static method '{0}' of '{1}' at {2}", Access.Name.Name, Access.Target.EvaluateAsString (context), Location));
+ throw new InvalidProjectFileException (Location, string.Format ("access to undefined static method '{0}' of '{1}' at {2}", Access.Name.Name, type, Location));
return method.Invoke (null, AdjustArgsForCall (method, args));
} else {
var prop = type.GetProperty (Access.Name.Name);
if (prop == null)
- throw new InvalidProjectFileException (Location, string.Format ("access to undefined static property '{0}' of '{1}' at {2}", Access.Name.Name, Access.Target.EvaluateAsString (context), Location));
+ throw new InvalidProjectFileException (Location, string.Format ("access to undefined static property '{0}' of '{1}' at {2}", Access.Name.Name, type, Location));
return prop.GetValue (null, null);
}
}
@@ -491,6 +491,30 @@ namespace Microsoft.Build.Internal.Expressions
return EvaluateAsString (context);
}
}
+
+ partial class QuotedExpression : Expression
+ {
+ public override string EvaluateAsString (EvaluationContext context)
+ {
+ return QuoteChar + EvaluateAsStringWithoutQuote (context) + QuoteChar;
+ }
+
+ public string EvaluateAsStringWithoutQuote (EvaluationContext context)
+ {
+ return string.Concat (Contents.Select (e => e.EvaluateAsString (context)));
+ }
+
+ public override bool EvaluateAsBoolean (EvaluationContext context)
+ {
+ var ret = EvaluateAsStringWithoutQuote (context);
+ return EvaluateStringAsBoolean (context, ret);
+ }
+
+ public override object EvaluateAsObject (EvaluationContext context)
+ {
+ return EvaluateAsStringWithoutQuote (context);
+ }
+ }
partial class FunctionCallExpression : Expression
{
diff --git a/mcs/class/Microsoft.Build/Microsoft.Build.Internal/ExpressionParserManual.cs b/mcs/class/Microsoft.Build/Microsoft.Build.Internal/ExpressionParserManual.cs
index a8c7dc4d61..73bac64445 100644
--- a/mcs/class/Microsoft.Build/Microsoft.Build.Internal/ExpressionParserManual.cs
+++ b/mcs/class/Microsoft.Build/Microsoft.Build.Internal/ExpressionParserManual.cs
@@ -60,14 +60,13 @@ namespace Microsoft.Build.Internal.Expressions
while (start < end) {
int bak = start;
ret.Add (ParseSingle (ref start, end));
- SkipSpaces (ref start);
if (bak == start)
throw new Exception ("Parser failed to progress token position: " + source);
}
return ret;
}
- static readonly char [] token_starters = "$@%(),".ToCharArray ();
+ static readonly char [] token_starters = "$@%(),'\"".ToCharArray ();
Expression ParseSingle (ref int start, int end)
{
@@ -101,7 +100,23 @@ namespace Microsoft.Build.Internal.Expressions
ret = EvaluateItemExpression (start, last);
start = last + 1;
return ret;
-
+
+ case '\'':
+ case '"':
+ var quoteChar = source [start];
+ start++;
+ last = FindMatchingCloseQuote (quoteChar, start, end);
+ if (last < 0) {
+ if (validation_type == ExpressionValidationType.StrictBoolean)
+ throw new InvalidProjectFileException (string.Format ("expression did not have matching ')' since index {0} in \"{1}\"", start, source));
+ else {
+ start--;
+ goto default; // treat as raw literal to the section end
+ }
+ }
+ ret = new QuotedExpression () { QuoteChar = quoteChar, Contents = Parse (start, last) };
+ start = last + 1;
+ return ret;
// Below (until default) are important only for Condition evaluation
case '(':
if (validation_type == ExpressionValidationType.LaxString)
@@ -134,7 +149,7 @@ namespace Microsoft.Build.Internal.Expressions
return ret;
}
}
-
+
int FindMatchingCloseParen (int start, int end)
{
int n = 0;
@@ -148,7 +163,21 @@ namespace Microsoft.Build.Internal.Expressions
}
return -1; // invalid
}
-
+
+ int FindMatchingCloseQuote (char quote, int start, int end)
+ {
+ int n = 0;
+ for (int i = start; i < end; i++) {
+ if (i < end + 1 && source [i] == '\\' && (source [i + 1] == quote || source [i + 1] == '\\'))
+ n += 2;
+ else if (source [i] == quote) {
+ if (n-- == 0)
+ return i;
+ }
+ }
+ return -1; // invalid
+ }
+
static readonly string spaces = " \t\r\n";
void SkipSpaces (ref int start)
@@ -166,6 +195,7 @@ namespace Microsoft.Build.Internal.Expressions
// property access without member specification
int parenAt = source.IndexOf ('(', start, end - start);
string name = parenAt < 0 ? source.Substring (start, end - start) : source.Substring (start, parenAt - start);
+ name = name.Trim ();
var access = new PropertyAccess () {
Name = new NameToken () { Name = name },
TargetType = PropertyTargetType.Object
@@ -181,6 +211,7 @@ namespace Microsoft.Build.Internal.Expressions
int mstart = dotAt + 1;
int parenAt = source.IndexOf ('(', mstart, end - mstart);
string name = parenAt < 0 ? source.Substring (mstart, end - mstart) : source.Substring (mstart, parenAt - mstart);
+ name = name.Trim ();
var access = new PropertyAccess () {
Name = new NameToken () { Name = name },
TargetType = PropertyTargetType.Object,
@@ -196,10 +227,11 @@ namespace Microsoft.Build.Internal.Expressions
string type = source.Substring (start, colonsAt - start);
if (type.Length < 2 || type [0] != '[' || type [type.Length - 1] != ']')
throw new InvalidProjectFileException (string.Format ("Static function call misses appropriate type name surrounded by '[' and ']' at {0} in \"{1}\"", start, source));
- type = type.Substring (1, type.Length - 2);
+ type = type.Substring (1, type.Length - 2).Trim ();
start = colonsAt + 2;
int parenAt = source.IndexOf ('(', start, end - start);
string member = parenAt < 0 ? source.Substring (start, end - start) : source.Substring (start, parenAt - start);
+ member = member.Trim ();
if (member.Length == 0)
throw new InvalidProjectFileException ("Static member name is missing");
var access = new PropertyAccess () {
@@ -228,6 +260,7 @@ namespace Microsoft.Build.Internal.Expressions
if (source [start] != ',')
throw new InvalidProjectFileException (string.Format ("invalid function call arguments specification. ',' is expected, got '{0}'", source [start]));
start++;
+ SkipSpaces (ref start);
}
args.Add (ParseSingle (ref start, end));
} while (true);
diff --git a/mcs/class/Microsoft.Build/Test/Microsoft.Build.Evaluation/ProjectCollectionTest.cs b/mcs/class/Microsoft.Build/Test/Microsoft.Build.Evaluation/ProjectCollectionTest.cs
index 700a41663d..2430ecce09 100644
--- a/mcs/class/Microsoft.Build/Test/Microsoft.Build.Evaluation/ProjectCollectionTest.cs
+++ b/mcs/class/Microsoft.Build/Test/Microsoft.Build.Evaluation/ProjectCollectionTest.cs
@@ -40,6 +40,10 @@ namespace MonoTests.Microsoft.Build.Evaluation
public class ProjectCollectionTest
{
[Test]
+#if NET_4_0
+ // BXC #20961
+ [Category ("NotWorking")]
+#endif
public void GlobalProperties ()
{
var g = ProjectCollection.GlobalProjectCollection;
diff --git a/mcs/class/Microsoft.Build/Test/Microsoft.Build.Evaluation/ProjectTest.cs b/mcs/class/Microsoft.Build/Test/Microsoft.Build.Evaluation/ProjectTest.cs
index ed81f8155d..f5f880a0b5 100644
--- a/mcs/class/Microsoft.Build/Test/Microsoft.Build.Evaluation/ProjectTest.cs
+++ b/mcs/class/Microsoft.Build/Test/Microsoft.Build.Evaluation/ProjectTest.cs
@@ -173,6 +173,10 @@ namespace MonoTests.Microsoft.Build.Evaluation
}
[Test]
+#if NET_4_0
+ // BXC #20961
+ [Category ("NotWorking")]
+#endif
public void BuildCSharpTargetBuild ()
{
string project_xml = @"
@@ -254,6 +258,10 @@ namespace MonoTests.Microsoft.Build.Evaluation
}
[Test]
+#if NET_4_0
+ // BXC #20961
+ [Category ("NotWorking")]
+#endif
public void CreateProjectInstance ()
{
string project_xml = @"
@@ -270,6 +278,10 @@ namespace MonoTests.Microsoft.Build.Evaluation
}
[Test]
+#if NET_4_0
+ // BXC #20961
+ [Category ("NotWorking")]
+#endif
public void LoadCaseInsensitive ()
{
string project_xml = @"
diff --git a/mcs/class/Microsoft.Build/Test/Microsoft.Build.Execution/ProjectInstanceTest.cs b/mcs/class/Microsoft.Build/Test/Microsoft.Build.Execution/ProjectInstanceTest.cs
index 44157a8444..30524ffd27 100644
--- a/mcs/class/Microsoft.Build/Test/Microsoft.Build.Execution/ProjectInstanceTest.cs
+++ b/mcs/class/Microsoft.Build/Test/Microsoft.Build.Execution/ProjectInstanceTest.cs
@@ -291,6 +291,56 @@ namespace MonoTests.Microsoft.Build.Execution
Assert.IsNotNull (p, "#1");
Assert.AreEqual ("False", p.EvaluatedValue, "#2");
}
+
+ [Test]
+ public void ConditionalExpression ()
+ {
+ string project_xml = @"
+
+ true
+ $(ResolveAssemblyReferencesDependsOn);_AddCorlibReference
+
+";
+ var xml = XmlReader.Create (new StringReader (project_xml));
+ var root = ProjectRootElement.Create (xml);
+ root.FullPath = "ProjectInstanceTest.ConditionalExpression.proj";
+ var proj = new ProjectInstance (root);
+ var p = proj.GetProperty ("ResolveAssemblyReferencesDependsOn");
+ Assert.IsNotNull (p, "#1");
+ Assert.AreEqual (";_AddCorlibReference", p.EvaluatedValue, "#2");
+ }
+
+ [Test]
+ [Category ("NotWorking")] // until we figure out why it fails on wrench.
+ public void ItemsInTargets ()
+ {
+ string project_xml = @"
+
+
+ <_ExplicitMSCorlibPath>$([Microsoft.Build.Utilities.ToolLocationHelper]::GetPathToStandardLibraries ('$(TargetFrameworkIdentifier)', '$(TargetFrameworkVersion)', '$(TargetFrameworkProfile)'))\mscorlib.dll
+
+
+ <_ExplicitReference
+ Include='$(_ExplicitMSCorlibPath)'
+ Condition='Exists($(_ExplicitMSCorlibPath))'>
+ false
+
+
+
+
+";
+ var xml = XmlReader.Create (new StringReader (project_xml));
+ var root = ProjectRootElement.Create (xml);
+ root.FullPath = "ProjectInstanceTest.ConditionalExpression.proj";
+ var proj = new ProjectInstance (root, null, "4.0", ProjectCollection.GlobalProjectCollection);
+ proj.Build ();
+ // make sure the property value expansion is done successfully.
+ Assert.IsTrue (!string.IsNullOrEmpty (proj.GetPropertyValue ("_ExplicitMSCorlibPath")), "premise: propertyValue by ToolLocationHelper func call");
+ var items = proj.GetItems ("_ExplicitReference");
+ // make sure items are stored after build.
+ Assert.IsTrue (items.Any (), "items.Any");
+ Assert.IsTrue (!string.IsNullOrEmpty (items.First ().EvaluatedInclude), "item.EvaluatedInclude");
+ }
}
namespace SubNamespace
diff --git a/mcs/class/Microsoft.Build/Test/Microsoft.Build.Internal/ExpressionParserTest.cs b/mcs/class/Microsoft.Build/Test/Microsoft.Build.Internal/ExpressionParserTest.cs
index ebd662e249..16694f7622 100644
--- a/mcs/class/Microsoft.Build/Test/Microsoft.Build.Internal/ExpressionParserTest.cs
+++ b/mcs/class/Microsoft.Build/Test/Microsoft.Build.Internal/ExpressionParserTest.cs
@@ -335,6 +335,22 @@ namespace MonoTests.Microsoft.Build.Internal
var result = p.Build (new ILogger [] { new ConsoleLogger (LoggerVerbosity.Minimal, sw.WriteLine, null, null)});
Assert.IsTrue (result, "#1: " + sw);
}
+
+ [Test]
+ public void FunctionCall ()
+ {
+ string project_xml = @"
+
+
+
+";
+ var xml = XmlReader.Create (new StringReader (project_xml));
+ var root = ProjectRootElement.Create (xml);
+ var p = new ProjectInstance (root, null, "4.0", ProjectCollection.GlobalProjectCollection);
+ var sw = new StringWriter ();
+ var result = p.Build (new ILogger [] { new ConsoleLogger (LoggerVerbosity.Minimal, sw.WriteLine, null, null)});
+ Assert.IsTrue (result, "#1: " + sw);
+ }
}
}
diff --git a/mcs/class/Mono.Cairo/Mono.Cairo/Context.cs b/mcs/class/Mono.Cairo/Mono.Cairo/Context.cs
index 1eff46c1ec..57cb86cd8b 100644
--- a/mcs/class/Mono.Cairo/Mono.Cairo/Context.cs
+++ b/mcs/class/Mono.Cairo/Mono.Cairo/Context.cs
@@ -161,10 +161,10 @@ namespace Cairo {
}
}
- [Obsolete ("Use SetSourceRGBA method")]
+ [Obsolete ("Use SetSourceColor method")]
public Color Color {
set {
- NativeMethods.cairo_set_source_rgba (handle, value.R, value.G, value.B, value.A);
+ SetSourceColor (value);
}
}
@@ -280,6 +280,12 @@ namespace Cairo {
}
}
+ public bool HasCurrentPoint {
+ get {
+ return NativeMethods.cairo_has_current_point (handle);
+ }
+ }
+
[Obsolete ("Use GetTarget/SetTarget")]
public Cairo.Surface Target {
set {
@@ -331,6 +337,11 @@ namespace Cairo {
get { return NativeMethods.cairo_get_reference_count (handle); }
}
+ public void SetSourceColor (Color color)
+ {
+ NativeMethods.cairo_set_source_rgba (handle, color.R, color.G, color.B, color.A);
+ }
+
public void SetSourceRGB (double r, double g, double b)
{
NativeMethods.cairo_set_source_rgb (handle, r, g, b);
@@ -548,6 +559,11 @@ namespace Cairo {
NativeMethods.cairo_reset_clip (handle);
}
+ public bool InClip (double x, double y)
+ {
+ return NativeMethods.cairo_in_clip (handle, x, y);
+ }
+
public bool InStroke (double x, double y)
{
return NativeMethods.cairo_in_stroke (handle, x, y);
diff --git a/mcs/class/Mono.Cairo/Mono.Cairo/NativeMethods.cs b/mcs/class/Mono.Cairo/Mono.Cairo/NativeMethods.cs
index c53f0009c0..8509c6db25 100644
--- a/mcs/class/Mono.Cairo/Mono.Cairo/NativeMethods.cs
+++ b/mcs/class/Mono.Cairo/Mono.Cairo/NativeMethods.cs
@@ -258,6 +258,10 @@ namespace Cairo
[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
internal static extern void cairo_glyph_path (IntPtr cr, IntPtr glyphs, int num_glyphs);
+ [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+ [return: MarshalAs (UnmanagedType.U1)]
+ internal static extern bool cairo_has_current_point (IntPtr cr);
+
[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
internal static extern void cairo_identity_matrix (IntPtr cr);
@@ -292,6 +296,10 @@ namespace Cairo
[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
internal static extern int cairo_image_surface_get_width (IntPtr surface);
+ [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+ [return: MarshalAs (UnmanagedType.U1)]
+ internal static extern bool cairo_in_clip (IntPtr cr, double x, double y);
+
[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
[return: MarshalAs (UnmanagedType.U1)]
internal static extern bool cairo_in_fill (IntPtr cr, double x, double y);
diff --git a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLite3.cs b/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLite3.cs
index 567d6bc1bf..d2ef1f6316 100644
--- a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLite3.cs
+++ b/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLite3.cs
@@ -652,11 +652,37 @@ namespace Mono.Data.Sqlite
return UnsafeNativeMethods.sqlite3_aggregate_count(context);
}
+#if MONOTOUCH
+ class FunctionData {
+ public SQLiteCallback Func;
+ public SQLiteCallback FuncStep;
+ public SQLiteFinalCallback FuncFinal;
+ }
+#endif
+
internal override void CreateFunction(string strFunction, int nArgs, bool needCollSeq, SQLiteCallback func, SQLiteCallback funcstep, SQLiteFinalCallback funcfinal)
{
int n;
-#if !SQLITE_STANDARD
+#if MONOTOUCH
+ var data = new FunctionData();
+ data.Func = func;
+ data.FuncStep = funcstep;
+ data.FuncFinal = funcfinal;
+ SQLiteCallback func_callback = func == null ? null : new SQLiteCallback(scalar_callback);
+ SQLiteCallback funcstep_callback = funcstep == null ? null : new SQLiteCallback(step_callback);
+ SQLiteFinalCallback funcfinal_callback = funcfinal == null ? null : new SQLiteFinalCallback(final_callback);
+
+ IntPtr user_data;
+ user_data = GCHandle.ToIntPtr(GCHandle.Alloc(data));
+ n = UnsafeNativeMethods.sqlite3_create_function_v2(_sql, ToUTF8(strFunction), nArgs, 4, user_data, func_callback, funcstep_callback, funcfinal_callback, destroy_callback);
+
+ if (n == 0) {
+ // sqlite3_create_function_v2 will call 'destroy_callback' if it fails, so we need to recreate the gchandle here.
+ user_data = GCHandle.ToIntPtr(GCHandle.Alloc(data));
+ n = UnsafeNativeMethods.sqlite3_create_function_v2(_sql, ToUTF8(strFunction), nArgs, 1, user_data, func_callback, funcstep_callback, funcfinal_callback, destroy_callback);
+ }
+#elif !SQLITE_STANDARD
n = UnsafeNativeMethods.sqlite3_create_function_interop(_sql, ToUTF8(strFunction), nArgs, 4, IntPtr.Zero, func, funcstep, funcfinal, (needCollSeq == true) ? 1 : 0);
if (n == 0) n = UnsafeNativeMethods.sqlite3_create_function_interop(_sql, ToUTF8(strFunction), nArgs, 1, IntPtr.Zero, func, funcstep, funcfinal, (needCollSeq == true) ? 1 : 0);
#else
@@ -673,6 +699,38 @@ namespace Mono.Data.Sqlite
if (n > 0) throw new SqliteException(n, SQLiteLastError());
}
+#if MONOTOUCH
+ [MonoTouch.MonoPInvokeCallback(typeof(SQLiteCallback))]
+ internal static void scalar_callback(IntPtr context, int nArgs, IntPtr argsptr)
+ {
+ var handle = GCHandle.FromIntPtr (UnsafeNativeMethods.sqlite3_user_data(context));
+ var func = (FunctionData)handle.Target;
+ func.Func(context, nArgs, argsptr);
+ }
+
+ [MonoTouch.MonoPInvokeCallback(typeof(SQLiteCallback))]
+ internal static void step_callback(IntPtr context, int nArgs, IntPtr argsptr)
+ {
+ var handle = GCHandle.FromIntPtr(UnsafeNativeMethods.sqlite3_user_data(context));
+ var func = (FunctionData)handle.Target;
+ func.FuncStep(context, nArgs, argsptr);
+ }
+
+ [MonoTouch.MonoPInvokeCallback(typeof(SQLiteFinalCallback))]
+ internal static void final_callback(IntPtr context)
+ {
+ var handle = GCHandle.FromIntPtr(UnsafeNativeMethods.sqlite3_user_data(context));
+ var func = (FunctionData)handle.Target;
+ func.FuncFinal(context);
+ }
+
+ [MonoTouch.MonoPInvokeCallback(typeof(SQLiteFinalCallback))]
+ internal static void destroy_callback(IntPtr context)
+ {
+ GCHandle.FromIntPtr(context).Free();
+ }
+#endif
+
internal override int ContextCollateCompare(CollationEncodingEnum enc, IntPtr context, string s1, string s2)
{
#if !SQLITE_STANDARD
diff --git a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/UnsafeNativeMethods.cs b/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/UnsafeNativeMethods.cs
index 7e5c153906..bde7bdeb3d 100644
--- a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/UnsafeNativeMethods.cs
+++ b/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/UnsafeNativeMethods.cs
@@ -141,6 +141,13 @@ namespace Mono.Data.Sqlite
#endif
internal static extern int sqlite3_create_function(IntPtr db, byte[] strName, int nArgs, int nType, IntPtr pvUser, SQLiteCallback func, SQLiteCallback fstep, SQLiteFinalCallback ffinal);
+#if !PLATFORM_COMPACTFRAMEWORK
+ [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+ [DllImport(SQLITE_DLL)]
+#endif
+ internal static extern int sqlite3_create_function_v2(IntPtr db, byte[] strName, int nArgs, int nType, IntPtr pvUser, SQLiteCallback func, SQLiteCallback fstep, SQLiteFinalCallback ffinal, SQLiteFinalCallback fdestroy);
+
#if !PLATFORM_COMPACTFRAMEWORK
[DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
#else
@@ -692,7 +699,14 @@ namespace Mono.Data.Sqlite
[DllImport(SQLITE_DLL)]
#endif
internal static extern int sqlite3_config (SQLiteConfig config);
-
+
+#if !PLATFORM_COMPACTFRAMEWORK
+ [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+ [DllImport(SQLITE_DLL)]
+#endif
+ internal static extern IntPtr sqlite3_user_data (IntPtr context);
+
#if !PLATFORM_COMPACTFRAMEWORK
[DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
#else
diff --git a/mcs/class/Mono.Data.Sqlite/Test/SqliteFunctionTests.cs b/mcs/class/Mono.Data.Sqlite/Test/SqliteFunctionTests.cs
index 55038e926f..294a591a81 100644
--- a/mcs/class/Mono.Data.Sqlite/Test/SqliteFunctionTests.cs
+++ b/mcs/class/Mono.Data.Sqlite/Test/SqliteFunctionTests.cs
@@ -43,5 +43,27 @@ namespace MonoTests.Mono.Data.Sqlite
return string.Compare (param1, param2);
}
}
+
+ [SqliteFunction(Name = "TestScalar", FuncType = FunctionType.Scalar)]
+ public class TestScalar : SqliteFunction
+ {
+ public override object Invoke (object[] args)
+ {
+ return null;
+ }
+ }
+
+ [SqliteFunction(Name = "TestAggregate", FuncType = FunctionType.Aggregate)]
+ public class TestAggregate : SqliteFunction
+ {
+ public override void Step(object[] args, int stepNumber, ref object contextData)
+ {
+ }
+
+ public override object Final (object contextData)
+ {
+ return null;
+ }
+ }
}
}
diff --git a/mcs/class/Mono.Debugger.Soft/Makefile b/mcs/class/Mono.Debugger.Soft/Makefile
index 57e2b054b1..1c4dd2792a 100644
--- a/mcs/class/Mono.Debugger.Soft/Makefile
+++ b/mcs/class/Mono.Debugger.Soft/Makefile
@@ -8,6 +8,11 @@ LIB_MCS_FLAGS = /r:$(corlib) /r:System.dll /r:Mono.Cecil.dll /r:System.Core.dll
TEST_MCS_FLAGS = /r:Mono.Cecil.dll /r:System.dll /r:System.Core.dll
+VALID_TEST_PROFILE := $(filter net_4_5, $(PROFILE))
+
+# The test exe is not profile specific, and compiling a 2.0 will make the 4.5 tests fail
+ifdef VALID_TEST_PROFILE
+
test-local: dtest-app.exe dtest-excfilter.exe
dtest-app.exe: Test/dtest-app.cs
@@ -16,6 +21,13 @@ dtest-app.exe: Test/dtest-app.cs
dtest-excfilter.exe: Test/dtest-excfilter.il
MONO_PATH=$(topdir)/class/lib/$(PROFILE) $(INTERNAL_ILASM) -out:$@ /exe /debug Test/dtest-excfilter.il
+else
+
+NO_TEST=1
+check:
+
+endif
+
CLEAN_FILES = dtest-app.exe dtest-app.exe.mdb dtest-excfilter.exe dtest-excfilter.exe.mdb
EXTRA_DISTFILES = \
diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs
index 6d196aabba..14bf701f46 100644
--- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs
+++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs
@@ -157,7 +157,9 @@ namespace Mono.Debugger.Soft
enum InvokeFlags {
NONE = 0x0,
DISABLE_BREAKPOINTS = 0x1,
- SINGLE_THREADED = 0x2
+ SINGLE_THREADED = 0x2,
+ OUT_THIS = 0x4,
+ OUT_ARGS = 0x8,
}
enum ElementType {
@@ -404,8 +406,7 @@ namespace Mono.Debugger.Soft
static readonly bool EnableConnectionLogging = !String.IsNullOrEmpty (Environment.GetEnvironmentVariable ("MONO_SDB_LOG"));
static int ConnectionId;
- readonly StreamWriter LoggingStream = EnableConnectionLogging ?
- new StreamWriter (string.Format ("/tmp/sdb_conn_log_{0}", ConnectionId++), false) : null;
+ readonly StreamWriter LoggingStream;
/*
* Th version of the wire-protocol implemented by the library. The library
@@ -415,7 +416,7 @@ namespace Mono.Debugger.Soft
* with newer runtimes, and vice versa.
*/
internal const int MAJOR_VERSION = 2;
- internal const int MINOR_VERSION = 34;
+ internal const int MINOR_VERSION = 35;
enum WPSuspendPolicy {
NONE = 0,
@@ -1068,6 +1069,19 @@ namespace Mono.Debugger.Soft
reply_cbs = new Dictionary ();
reply_cb_counts = new Dictionary ();
reply_packets_monitor = new Object ();
+ if (EnableConnectionLogging) {
+ var path = Environment.GetEnvironmentVariable ("MONO_SDB_LOG");
+ if (path.Contains ("{0}")) {
+ //C:\SomeDir\sdbLog{0}.txt -> C:\SomeDir\sdbLog1.txt
+ LoggingStream = new StreamWriter (string.Format (path, ConnectionId++), false);
+ } else if (Path.HasExtension (path)) {
+ //C:\SomeDir\sdbLog.txt -> C:\SomeDir\sdbLog1.txt
+ LoggingStream = new StreamWriter (Path.GetDirectoryName (path) + Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension (path) + ConnectionId++ + "." + Path.GetExtension (path), false);
+ } else {
+ //C:\SomeDir\sdbLog -> C:\SomeDir\sdbLog1
+ LoggingStream = new StreamWriter (path + ConnectionId++, false);
+ }
+ }
}
protected abstract int TransportReceive (byte[] buf, int buf_offset, int len);
@@ -1432,18 +1446,18 @@ namespace Mono.Debugger.Soft
//
public void StartBuffering () {
buffer_packets = true;
- if (Version.AtLeast (3, 34))
+ if (Version.AtLeast (2, 34))
VM_StartBuffering ();
}
public void StopBuffering () {
- if (Version.AtLeast (3, 34))
+ if (Version.AtLeast (2, 34))
VM_StopBuffering ();
buffer_packets = false;
WritePackets (buffered_packets);
if (EnableConnectionLogging) {
- LoggingStream.WriteLine (String.Format ("Sent {1} packets.", buffered_packets.Count));
+ LoggingStream.WriteLine (String.Format ("Sent {0} packets.", buffered_packets.Count));
LoggingStream.Flush ();
}
buffered_packets.Clear ();
@@ -1655,24 +1669,39 @@ namespace Mono.Debugger.Soft
}
}
- internal delegate void InvokeMethodCallback (ValueImpl v, ValueImpl exc, ErrorCode error, object state);
+ internal delegate void InvokeMethodCallback (ValueImpl v, ValueImpl exc, ValueImpl out_this, ValueImpl[] out_args, ErrorCode error, object state);
+
+ void read_invoke_res (PacketReader r, out ValueImpl v, out ValueImpl exc, out ValueImpl out_this, out ValueImpl[] out_args) {
+ int resflags = r.ReadByte ();
+ v = null;
+ exc = null;
+ out_this = null;
+ out_args = null;
+ if (resflags == 0) {
+ exc = r.ReadValue ();
+ } else {
+ v = r.ReadValue ();
+ if ((resflags & 2) != 0)
+ out_this = r.ReadValue ();
+ if ((resflags & 4) != 0) {
+ int nargs = r.ReadInt ();
+ out_args = new ValueImpl [nargs];
+ for (int i = 0; i < nargs; ++i)
+ out_args [i] = r.ReadValue ();
+ }
+ }
+ }
internal int VM_BeginInvokeMethod (long thread, long method, ValueImpl this_arg, ValueImpl[] arguments, InvokeFlags flags, InvokeMethodCallback callback, object state) {
return Send (CommandSet.VM, (int)CmdVM.INVOKE_METHOD, new PacketWriter ().WriteId (thread).WriteInt ((int)flags).WriteId (method).WriteValue (this_arg).WriteInt (arguments.Length).WriteValues (arguments), delegate (PacketReader r) {
- ValueImpl v, exc;
+ ValueImpl v, exc, out_this = null;
+ ValueImpl[] out_args = null;
if (r.ErrorCode != 0) {
- callback (null, null, (ErrorCode)r.ErrorCode, state);
+ callback (null, null, null, null, (ErrorCode)r.ErrorCode, state);
} else {
- if (r.ReadByte () == 0) {
- exc = r.ReadValue ();
- v = null;
- } else {
- v = r.ReadValue ();
- exc = null;
- }
-
- callback (v, exc, 0, state);
+ read_invoke_res (r, out v, out exc, out out_this, out out_args);
+ callback (v, exc, out_this, out_args, 0, state);
}
}, 1);
}
@@ -1690,20 +1719,14 @@ namespace Mono.Debugger.Soft
w.WriteValues (arguments [i]);
}
return Send (CommandSet.VM, (int)CmdVM.INVOKE_METHODS, w, delegate (PacketReader r) {
- ValueImpl v, exc;
+ ValueImpl v, exc, out_this = null;
+ ValueImpl[] out_args = null;
if (r.ErrorCode != 0) {
- callback (null, null, (ErrorCode)r.ErrorCode, state);
+ callback (null, null, null, null, (ErrorCode)r.ErrorCode, state);
} else {
- if (r.ReadByte () == 0) {
- exc = r.ReadValue ();
- v = null;
- } else {
- v = r.ReadValue ();
- exc = null;
- }
-
- callback (v, exc, 0, state);
+ read_invoke_res (r, out v, out exc, out out_this, out out_args);
+ callback (v, exc, out_this, out_args, 0, state);
}
}, methods.Length);
}
@@ -1983,21 +2006,20 @@ namespace Mono.Debugger.Soft
return SendReceive (CommandSet.THREAD, (int)CmdThread.GET_NAME, new PacketWriter ().WriteId (id)).ReadString ();
}
- internal FrameInfo[] Thread_GetFrameInfo (long id, int start_frame, int length) {
- var res = SendReceive (CommandSet.THREAD, (int)CmdThread.GET_FRAME_INFO, new PacketWriter ().WriteId (id).WriteInt (start_frame).WriteInt (length));
- int count = res.ReadInt ();
-
- var frames = new FrameInfo [count];
- for (int i = 0; i < count; ++i) {
- var f = new FrameInfo ();
- f.id = res.ReadInt ();
- f.method = res.ReadId ();
- f.il_offset = res.ReadInt ();
- f.flags = (StackFrameFlags)res.ReadByte ();
- frames [i] = f;
- }
-
- return frames;
+ internal void Thread_GetFrameInfo (long id, int start_frame, int length, Action resultCallaback) {
+ Send (CommandSet.THREAD, (int)CmdThread.GET_FRAME_INFO, new PacketWriter ().WriteId (id).WriteInt (start_frame).WriteInt (length), (res) => {
+ int count = res.ReadInt ();
+ var frames = new FrameInfo[count];
+ for (int i = 0; i < count; ++i) {
+ var f = new FrameInfo ();
+ f.id = res.ReadInt ();
+ f.method = res.ReadId ();
+ f.il_offset = res.ReadInt ();
+ f.flags = (StackFrameFlags)res.ReadByte ();
+ frames [i] = f;
+ }
+ resultCallaback (frames);
+ }, 1);
}
internal int Thread_GetState (long id) {
diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ILInterpreter.cs b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ILInterpreter.cs
index e0175f36bd..b4d6073819 100644
--- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ILInterpreter.cs
+++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ILInterpreter.cs
@@ -23,67 +23,347 @@ namespace Mono.Debugger.Soft
// IL_0008: br IL_000d
// IL_000d: ldloc.0
// IL_000e: ret
+ // ... or returns a simple constant:
+ // IL_0000: ldc.i4 1024
+ // IL_0005: conv.i8
+ // IL_0006: ret
if (args != null && args.Length != 0)
- throw new NotSupportedException ();
+ throw new NotSupportedException ();
+
if (method.IsStatic || method.DeclaringType.IsValueType || this_val == null || !(this_val is ObjectMirror))
throw new NotSupportedException ();
var instructions = body.Instructions;
- if (instructions.Count > 16)
+ if (instructions.Count < 1 || instructions.Count > 16)
throw new NotSupportedException ();
- Value[] stack = new Value [16];
- Value locals_0 = null;
- Value res = null;
-
- int sp = 0;
- int ins_count = 0;
+ var stack = new Value [16];
var ins = instructions [0];
+ Value locals_0 = null;
+ int ins_count = 0;
+ int sp = 0;
+
while (ins != null) {
if (ins_count > 16)
throw new NotImplementedException ();
- ins_count ++;
+
var next = ins.Next;
+ ins_count++;
var op = ins.OpCode;
if (op == OpCodes.Nop) {
} else if (op == OpCodes.Ldarg_0) {
- if (sp > 0)
+ if (sp != 0)
throw new NotSupportedException ();
+
stack [sp++] = this_val;
} else if (op == OpCodes.Ldfld) {
if (sp != 1)
throw new NotSupportedException ();
- var obj = (ObjectMirror)stack [--sp];
- var field = (FieldInfoMirror)ins.Operand;
+
+ var obj = (ObjectMirror) stack [--sp];
+ var field = (FieldInfoMirror) ins.Operand;
try {
stack [sp++] = obj.GetValue (field);
} catch (ArgumentException) {
throw new NotSupportedException ();
}
+ } else if (op == OpCodes.Ldc_I4_0) {
+ if (sp != 0)
+ throw new NotSupportedException ();
+
+ try {
+ stack [sp++] = new PrimitiveValue (method.VirtualMachine, 0);
+ } catch (ArgumentException) {
+ throw new NotSupportedException ();
+ }
+ } else if (op == OpCodes.Ldc_I4_1) {
+ if (sp != 0)
+ throw new NotSupportedException ();
+
+ try {
+ stack [sp++] = new PrimitiveValue (method.VirtualMachine, 1);
+ } catch (ArgumentException) {
+ throw new NotSupportedException ();
+ }
+ } else if (op == OpCodes.Ldc_I4_2) {
+ if (sp != 0)
+ throw new NotSupportedException ();
+
+ try {
+ stack [sp++] = new PrimitiveValue (method.VirtualMachine, 2);
+ } catch (ArgumentException) {
+ throw new NotSupportedException ();
+ }
+ } else if (op == OpCodes.Ldc_I4_3) {
+ if (sp != 0)
+ throw new NotSupportedException ();
+
+ try {
+ stack [sp++] = new PrimitiveValue (method.VirtualMachine, 3);
+ } catch (ArgumentException) {
+ throw new NotSupportedException ();
+ }
+ } else if (op == OpCodes.Ldc_I4_4) {
+ if (sp != 0)
+ throw new NotSupportedException ();
+
+ try {
+ stack [sp++] = new PrimitiveValue (method.VirtualMachine, 4);
+ } catch (ArgumentException) {
+ throw new NotSupportedException ();
+ }
+ } else if (op == OpCodes.Ldc_I4_5) {
+ if (sp != 0)
+ throw new NotSupportedException ();
+
+ try {
+ stack [sp++] = new PrimitiveValue (method.VirtualMachine, 5);
+ } catch (ArgumentException) {
+ throw new NotSupportedException ();
+ }
+ } else if (op == OpCodes.Ldc_I4_6) {
+ if (sp != 0)
+ throw new NotSupportedException ();
+
+ try {
+ stack [sp++] = new PrimitiveValue (method.VirtualMachine, 6);
+ } catch (ArgumentException) {
+ throw new NotSupportedException ();
+ }
+ } else if (op == OpCodes.Ldc_I4_7) {
+ if (sp != 0)
+ throw new NotSupportedException ();
+
+ try {
+ stack [sp++] = new PrimitiveValue (method.VirtualMachine, 7);
+ } catch (ArgumentException) {
+ throw new NotSupportedException ();
+ }
+ } else if (op == OpCodes.Ldc_I4_8) {
+ if (sp != 0)
+ throw new NotSupportedException ();
+
+ try {
+ stack [sp++] = new PrimitiveValue (method.VirtualMachine, 8);
+ } catch (ArgumentException) {
+ throw new NotSupportedException ();
+ }
+ } else if (op == OpCodes.Ldc_I4_M1) {
+ if (sp != 0)
+ throw new NotSupportedException ();
+
+ try {
+ stack [sp++] = new PrimitiveValue (method.VirtualMachine, -1);
+ } catch (ArgumentException) {
+ throw new NotSupportedException ();
+ }
+ } else if (op == OpCodes.Ldc_I4) {
+ if (sp != 0)
+ throw new NotSupportedException ();
+
+ try {
+ stack [sp++] = new PrimitiveValue (method.VirtualMachine, ins.Operand);
+ } catch (ArgumentException) {
+ throw new NotSupportedException ();
+ }
+ } else if (op == OpCodes.Ldc_I4_S) {
+ if (sp != 0)
+ throw new NotSupportedException ();
+
+ try {
+ stack [sp++] = new PrimitiveValue (method.VirtualMachine, ins.Operand);
+ } catch (ArgumentException) {
+ throw new NotSupportedException ();
+ }
+ } else if (op == OpCodes.Ldc_I8) {
+ if (sp != 0)
+ throw new NotSupportedException ();
+
+ try {
+ stack [sp++] = new PrimitiveValue (method.VirtualMachine, ins.Operand);
+ } catch (ArgumentException) {
+ throw new NotSupportedException ();
+ }
+ } else if (op == OpCodes.Ldc_R4) {
+ if (sp != 0)
+ throw new NotSupportedException ();
+
+ try {
+ stack [sp++] = new PrimitiveValue (method.VirtualMachine, ins.Operand);
+ } catch (ArgumentException) {
+ throw new NotSupportedException ();
+ }
+ } else if (op == OpCodes.Ldc_R8) {
+ if (sp != 0)
+ throw new NotSupportedException ();
+
+ try {
+ stack [sp++] = new PrimitiveValue (method.VirtualMachine, ins.Operand);
+ } catch (ArgumentException) {
+ throw new NotSupportedException ();
+ }
+ } else if (op == OpCodes.Conv_I) {
+ if (sp != 1)
+ throw new NotSupportedException ();
+
+ try {
+ var primitive = (PrimitiveValue) stack [--sp];
+ stack [sp++] = new PrimitiveValue (method.VirtualMachine, Convert.ToInt32 (primitive.Value));
+ } catch {
+ throw new NotSupportedException ();
+ }
+ } else if (op == OpCodes.Conv_I1) {
+ if (sp != 1)
+ throw new NotSupportedException ();
+
+ try {
+ var primitive = (PrimitiveValue) stack [--sp];
+ stack [sp++] = new PrimitiveValue (method.VirtualMachine, Convert.ToSByte (primitive.Value));
+ } catch {
+ throw new NotSupportedException ();
+ }
+ } else if (op == OpCodes.Conv_U1) {
+ if (sp != 1)
+ throw new NotSupportedException ();
+
+ try {
+ var primitive = (PrimitiveValue) stack [--sp];
+ stack [sp++] = new PrimitiveValue (method.VirtualMachine, Convert.ToByte (primitive.Value));
+ } catch {
+ throw new NotSupportedException ();
+ }
+ } else if (op == OpCodes.Conv_I2) {
+ if (sp != 1)
+ throw new NotSupportedException ();
+
+ try {
+ var primitive = (PrimitiveValue) stack [--sp];
+ stack [sp++] = new PrimitiveValue (method.VirtualMachine, Convert.ToInt16 (primitive.Value));
+ } catch {
+ throw new NotSupportedException ();
+ }
+ } else if (op == OpCodes.Conv_U2) {
+ if (sp != 1)
+ throw new NotSupportedException ();
+
+ try {
+ var primitive = (PrimitiveValue) stack [--sp];
+ stack [sp++] = new PrimitiveValue (method.VirtualMachine, Convert.ToUInt16 (primitive.Value));
+ } catch {
+ throw new NotSupportedException ();
+ }
+ } else if (op == OpCodes.Conv_I4) {
+ if (sp != 1)
+ throw new NotSupportedException ();
+
+ try {
+ var primitive = (PrimitiveValue) stack [--sp];
+ stack [sp++] = new PrimitiveValue (method.VirtualMachine, Convert.ToInt32 (primitive.Value));
+ } catch {
+ throw new NotSupportedException ();
+ }
+ } else if (op == OpCodes.Conv_U4) {
+ if (sp != 1)
+ throw new NotSupportedException ();
+
+ try {
+ var primitive = (PrimitiveValue) stack [--sp];
+ stack [sp++] = new PrimitiveValue (method.VirtualMachine, Convert.ToUInt32 (primitive.Value));
+ } catch {
+ throw new NotSupportedException ();
+ }
+ } else if (op == OpCodes.Conv_I8) {
+ if (sp != 1)
+ throw new NotSupportedException ();
+
+ try {
+ var primitive = (PrimitiveValue) stack [--sp];
+ stack [sp++] = new PrimitiveValue (method.VirtualMachine, Convert.ToInt64 (primitive.Value));
+ } catch {
+ throw new NotSupportedException ();
+ }
+ } else if (op == OpCodes.Conv_U8) {
+ if (sp != 1)
+ throw new NotSupportedException ();
+
+ try {
+ var primitive = (PrimitiveValue) stack [--sp];
+ stack [sp++] = new PrimitiveValue (method.VirtualMachine, Convert.ToUInt64 (primitive.Value));
+ } catch {
+ throw new NotSupportedException ();
+ }
+ } else if (op == OpCodes.Conv_R4) {
+ if (sp != 1)
+ throw new NotSupportedException ();
+
+ try {
+ var primitive = (PrimitiveValue) stack [--sp];
+ stack [sp++] = new PrimitiveValue (method.VirtualMachine, Convert.ToSingle (primitive.Value));
+ } catch {
+ throw new NotSupportedException ();
+ }
+ } else if (op == OpCodes.Conv_R8) {
+ if (sp != 1)
+ throw new NotSupportedException ();
+
+ try {
+ var primitive = (PrimitiveValue) stack [--sp];
+ stack [sp++] = new PrimitiveValue (method.VirtualMachine, Convert.ToDouble (primitive.Value));
+ } catch {
+ throw new NotSupportedException ();
+ }
} else if (op == OpCodes.Stloc_0) {
if (sp != 1)
throw new NotSupportedException ();
+
locals_0 = stack [--sp];
} else if (op == OpCodes.Br) {
- next = (ILInstruction)ins.Operand;
+ next = (ILInstruction) ins.Operand;
} else if (op == OpCodes.Ldloc_0) {
if (sp != 0)
throw new NotSupportedException ();
+
stack [sp++] = locals_0;
} else if (op == OpCodes.Ret) {
- if (sp == 0)
- res = null;
- else
- res = stack [--sp];
- break;
+ if (sp > 0) {
+ var res = stack [--sp];
+
+ var primitive = res as PrimitiveValue;
+ if (method.ReturnType.IsPrimitive && primitive != null) {
+ // cast the primitive value to the return type
+ try {
+ switch (method.ReturnType.CSharpName) {
+ case "double": res = new PrimitiveValue (method.VirtualMachine, Convert.ToDouble (primitive.Value)); break;
+ case "float": res = new PrimitiveValue (method.VirtualMachine, Convert.ToSingle (primitive.Value)); break;
+ case "ulong": res = new PrimitiveValue (method.VirtualMachine, Convert.ToUInt64 (primitive.Value)); break;
+ case "long": res = new PrimitiveValue (method.VirtualMachine, Convert.ToInt64 (primitive.Value)); break;
+ case "uint": res = new PrimitiveValue (method.VirtualMachine, Convert.ToUInt32 (primitive.Value)); break;
+ case "int": res = new PrimitiveValue (method.VirtualMachine, Convert.ToInt32 (primitive.Value)); break;
+ case "ushort": res = new PrimitiveValue (method.VirtualMachine, Convert.ToUInt16 (primitive.Value)); break;
+ case "short": res = new PrimitiveValue (method.VirtualMachine, Convert.ToInt16 (primitive.Value)); break;
+ case "sbyte": res = new PrimitiveValue (method.VirtualMachine, Convert.ToSByte (primitive.Value)); break;
+ case "byte": res = new PrimitiveValue (method.VirtualMachine, Convert.ToByte (primitive.Value)); break;
+ case "char": res = new PrimitiveValue (method.VirtualMachine, Convert.ToChar (primitive.Value)); break;
+ case "bool": res = new PrimitiveValue (method.VirtualMachine, Convert.ToBoolean (primitive.Value)); break;
+ }
+ } catch {
+ throw new NotSupportedException ();
+ }
+ }
+
+ return res;
+ }
+
+ return null;
} else {
throw new NotSupportedException ();
}
+
ins = next;
}
- return res;
+ return null;
}
}
}
diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/InvokeOptions.cs b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/InvokeOptions.cs
index bc06479508..5ca987ec69 100644
--- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/InvokeOptions.cs
+++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/InvokeOptions.cs
@@ -13,6 +13,15 @@ namespace Mono.Debugger.Soft
/*
* Only resume the target thread during the invoke
*/
- SingleThreaded = 2
+ SingleThreaded = 2,
+ /*
+ * Return the changed receiver when invoking
+ * a valuetype method.
+ */
+ ReturnOutThis = 4,
+ /*
+ * Return the values of out arguments
+ */
+ ReturnOutArgs = 8
}
}
diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ObjectMirror.cs b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ObjectMirror.cs
index f3eedccaf5..d83e3a1a48 100644
--- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ObjectMirror.cs
+++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ObjectMirror.cs
@@ -8,6 +8,22 @@ using System.Threading.Tasks;
namespace Mono.Debugger.Soft
{
+ public class InvokeResult {
+ public Value Result { get; set; }
+ //
+ // The value of the receiver after the call for calls to valuetype methods or null.
+ // Only set when using the InvokeOptions.ReturnOutThis flag.
+ // Since protocol version 2.35
+ //
+ public Value OutThis { get; set; }
+ //
+ // The value of the arguments after the call
+ // Only set when using the InvokeOptions.ReturnOutArgs flag.
+ // Since protocol version 2.35
+ //
+ public Value[] OutArgs { get; set; }
+ }
+
public class ObjectMirror : Value {
TypeMirror type;
AppDomainMirror domain;
@@ -149,6 +165,10 @@ namespace Mono.Debugger.Soft
return EndInvokeMethodInternal (asyncResult);
}
+ public InvokeResult EndInvokeMethodWithResult (IAsyncResult asyncResult) {
+ return ObjectMirror.EndInvokeMethodInternalWithResult (asyncResult);
+ }
+
#if NET_4_5
public Task InvokeMethodAsync (ThreadMirror thread, MethodMirror method, IList arguments, InvokeOptions options = InvokeOptions.None) {
var tcs = new TaskCompletionSource ();
@@ -164,6 +184,21 @@ namespace Mono.Debugger.Soft
}, null);
return tcs.Task;
}
+
+ public Task InvokeMethodAsyncWithResult (ThreadMirror thread, MethodMirror method, IList arguments, InvokeOptions options = InvokeOptions.None) {
+ var tcs = new TaskCompletionSource ();
+ BeginInvokeMethod (thread, method, arguments, options, iar =>
+ {
+ try {
+ tcs.SetResult (EndInvokeMethodInternalWithResult (iar));
+ } catch (OperationCanceledException) {
+ tcs.TrySetCanceled ();
+ } catch (Exception ex) {
+ tcs.TrySetException (ex);
+ }
+ }, null);
+ return tcs.Task;
+ }
#endif
//
@@ -223,6 +258,14 @@ namespace Mono.Debugger.Soft
get; set;
}
+ public ValueImpl OutThis {
+ get; set;
+ }
+
+ public ValueImpl[] OutArgs {
+ get; set;
+ }
+
public ValueImpl Exception {
get; set;
}
@@ -260,16 +303,20 @@ namespace Mono.Debugger.Soft
f |= InvokeFlags.DISABLE_BREAKPOINTS;
if ((options & InvokeOptions.SingleThreaded) != 0)
f |= InvokeFlags.SINGLE_THREADED;
+ if ((options & InvokeOptions.ReturnOutThis) != 0)
+ f |= InvokeFlags.OUT_THIS;
+ if ((options & InvokeOptions.ReturnOutArgs) != 0)
+ f |= InvokeFlags.OUT_ARGS;
InvokeAsyncResult r = new InvokeAsyncResult { AsyncState = state, AsyncWaitHandle = new ManualResetEvent (false), VM = vm, Thread = thread, Callback = callback };
-
+ thread.InvalidateFrames ();
r.ID = vm.conn.VM_BeginInvokeMethod (thread.Id, method.Id, this_obj != null ? vm.EncodeValue (this_obj) : vm.EncodeValue (vm.CreateValue (null)), vm.EncodeValues (arguments), f, InvokeCB, r);
return r;
}
// This is called when the result of an invoke is received
- static void InvokeCB (ValueImpl v, ValueImpl exc, ErrorCode error, object state) {
+ static void InvokeCB (ValueImpl v, ValueImpl exc, ValueImpl out_this, ValueImpl[] out_args, ErrorCode error, object state) {
InvokeAsyncResult r = (InvokeAsyncResult)state;
if (error != 0) {
@@ -279,6 +326,9 @@ namespace Mono.Debugger.Soft
r.Exception = exc;
}
+ r.OutThis = out_this;
+ r.OutArgs = out_args;
+
r.IsCompleted = true;
((ManualResetEvent)r.AsyncWaitHandle).Set ();
@@ -286,7 +336,7 @@ namespace Mono.Debugger.Soft
r.Callback.BeginInvoke (r, null, null);
}
- internal static Value EndInvokeMethodInternal (IAsyncResult asyncResult) {
+ internal static InvokeResult EndInvokeMethodInternalWithResult (IAsyncResult asyncResult) {
if (asyncResult == null)
throw new ArgumentNullException ("asyncResult");
@@ -301,18 +351,30 @@ namespace Mono.Debugger.Soft
} catch (CommandException ex) {
if (ex.ErrorCode == ErrorCode.INVALID_ARGUMENT)
throw new ArgumentException ("Incorrect number or types of arguments", "arguments");
- else
- throw;
+
+ throw;
}
throw new NotImplementedException ();
} else {
if (r.Exception != null)
throw new InvocationException ((ObjectMirror)r.VM.DecodeValue (r.Exception));
- else
- return r.VM.DecodeValue (r.Value);
+
+ Value out_this = null;
+ if (r.OutThis != null)
+ out_this = r.VM.DecodeValue (r.OutThis);
+ Value[] out_args = null;
+ if (r.OutArgs != null)
+ out_args = r.VM.DecodeValues (r.OutArgs);
+
+ return new InvokeResult () { Result = r.VM.DecodeValue (r.Value), OutThis = out_this, OutArgs = out_args };
}
}
+ internal static Value EndInvokeMethodInternal (IAsyncResult asyncResult) {
+ InvokeResult res = EndInvokeMethodInternalWithResult (asyncResult);
+ return res.Result;
+ }
+
internal static void EndInvokeMultipleInternal (IAsyncResult asyncResult) {
if (asyncResult == null)
throw new ArgumentNullException ("asyncResult");
@@ -370,13 +432,14 @@ namespace Mono.Debugger.Soft
var args = new List ();
for (int i = 0; i < methods.Length; ++i)
args.Add (vm.EncodeValues (arguments [i]));
+ thread.InvalidateFrames ();
r.ID = vm.conn.VM_BeginInvokeMethods (thread.Id, mids, this_obj != null ? vm.EncodeValue (this_obj) : vm.EncodeValue (vm.CreateValue (null)), args, f, InvokeMultipleCB, r);
return r;
}
// This is called when the result of an invoke is received
- static void InvokeMultipleCB (ValueImpl v, ValueImpl exc, ErrorCode error, object state) {
+ static void InvokeMultipleCB (ValueImpl v, ValueImpl exc, ValueImpl out_this, ValueImpl[] out_args, ErrorCode error, object state) {
var r = (InvokeAsyncResult)state;
Interlocked.Decrement (ref r.NumPending);
diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/PrimitiveValue.cs b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/PrimitiveValue.cs
index 696f6493f4..2ba50c84d4 100644
--- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/PrimitiveValue.cs
+++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/PrimitiveValue.cs
@@ -22,8 +22,11 @@ namespace Mono.Debugger.Soft
public override bool Equals (object obj) {
if (value == obj)
return true;
- if (obj != null && obj is PrimitiveValue)
- return value == (obj as PrimitiveValue).Value;
+
+ var primitive = obj as PrimitiveValue;
+ if (primitive != null)
+ return value == primitive.Value;
+
return base.Equals (obj);
}
@@ -52,5 +55,9 @@ namespace Mono.Debugger.Soft
public Value EndInvokeMethod (IAsyncResult asyncResult) {
return ObjectMirror.EndInvokeMethodInternal (asyncResult);
}
+
+ public InvokeResult EndInvokeMethodWithResult (IAsyncResult asyncResult) {
+ return ObjectMirror.EndInvokeMethodInternalWithResult (asyncResult);
+ }
}
}
\ No newline at end of file
diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/StructMirror.cs b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/StructMirror.cs
index b6e43eb4e2..1aa1a4ef5e 100644
--- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/StructMirror.cs
+++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/StructMirror.cs
@@ -1,5 +1,8 @@
using System;
using System.Collections.Generic;
+#if NET_4_5
+using System.Threading.Tasks;
+#endif
namespace Mono.Debugger.Soft
{
@@ -83,7 +86,53 @@ namespace Mono.Debugger.Soft
}
public Value EndInvokeMethod (IAsyncResult asyncResult) {
- return ObjectMirror.EndInvokeMethodInternal (asyncResult);
+ var result = ObjectMirror.EndInvokeMethodInternalWithResult (asyncResult);
+ var outThis = result.OutThis as StructMirror;
+ if (outThis != null) {
+ SetFields (outThis.Fields);
+ }
+ return result.Result;
}
+
+ public InvokeResult EndInvokeMethodWithResult (IAsyncResult asyncResult) {
+ var result = ObjectMirror.EndInvokeMethodInternalWithResult (asyncResult);
+ var outThis = result.OutThis as StructMirror;
+ if (outThis != null) {
+ SetFields (outThis.Fields);
+ }
+ return result;
+ }
+
+#if NET_4_5
+ public Task InvokeMethodAsync (ThreadMirror thread, MethodMirror method, IList arguments, InvokeOptions options = InvokeOptions.None) {
+ var tcs = new TaskCompletionSource ();
+ BeginInvokeMethod (thread, method, arguments, options, iar =>
+ {
+ try {
+ tcs.SetResult (EndInvokeMethod (iar));
+ } catch (OperationCanceledException) {
+ tcs.TrySetCanceled ();
+ } catch (Exception ex) {
+ tcs.TrySetException (ex);
+ }
+ }, null);
+ return tcs.Task;
+ }
+
+ public Task InvokeMethodAsyncWithResult (ThreadMirror thread, MethodMirror method, IList arguments, InvokeOptions options = InvokeOptions.None) {
+ var tcs = new TaskCompletionSource ();
+ BeginInvokeMethod (thread, method, arguments, options, iar =>
+ {
+ try {
+ tcs.SetResult (ObjectMirror.EndInvokeMethodInternalWithResult (iar));
+ } catch (OperationCanceledException) {
+ tcs.TrySetCanceled ();
+ } catch (Exception ex) {
+ tcs.TrySetException (ex);
+ }
+ }, null);
+ return tcs.Task;
+ }
+#endif
}
}
diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ThreadMirror.cs b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ThreadMirror.cs
index 38c733ccaf..541118d66d 100644
--- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ThreadMirror.cs
+++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ThreadMirror.cs
@@ -7,7 +7,12 @@ namespace Mono.Debugger.Soft
public class ThreadMirror : ObjectMirror
{
string name;
+ bool cacheInvalid = true;
+ bool fetching;
+ object fetchingLocker = new object ();
+ ManualResetEvent fetchingEvent = new ManualResetEvent (false);
ThreadInfo info;
+ StackFrame[] frames;
internal ThreadMirror (VirtualMachine vm, long id) : base (vm, id) {
}
@@ -15,22 +20,58 @@ namespace Mono.Debugger.Soft
internal ThreadMirror (VirtualMachine vm, long id, TypeMirror type, AppDomainMirror domain) : base (vm, id, type, domain) {
}
- // FIXME: Cache, invalidate when the thread/runtime is resumed
public StackFrame[] GetFrames () {
- FrameInfo[] frame_info = vm.conn.Thread_GetFrameInfo (id, 0, -1);
+ FetchFrames (true);
+ fetchingEvent.WaitOne ();
+ return frames;
+ }
- var frames = new List ();
+ internal void InvalidateFrames () {
+ cacheInvalid = true;
+ }
- for (int i = 0; i < frame_info.Length; ++i) {
- FrameInfo info = (FrameInfo)frame_info [i];
- MethodMirror method = vm.GetMethod (info.method);
- var f = new StackFrame (vm, info.id, this, method, info.il_offset, info.flags);
- if (!(f.IsNativeTransition && !NativeTransitions))
- frames.Add (f);
+ internal void FetchFrames (bool mustFetch = false) {
+ lock (fetchingLocker) {
+ if (fetching || !cacheInvalid)
+ return;
+ cacheInvalid = false;
+ fetching = true;
+ fetchingEvent.Reset ();
}
+ vm.conn.Thread_GetFrameInfo (id, 0, -1, (frame_info) => {
+ var framesList = new List ();
+ for (int i = 0; i < frame_info.Length; ++i) {
+ var frameInfo = (FrameInfo)frame_info [i];
+ var method = vm.GetMethod (frameInfo.method);
+ var f = new StackFrame (vm, frameInfo.id, this, method, frameInfo.il_offset, frameInfo.flags);
+ if (!(f.IsNativeTransition && !NativeTransitions))
+ framesList.Add (f);
+ }
+ lock (fetchingLocker) {
+ vm.AddThreadToInvalidateList (this);
+ fetching = false;
+ //In case it was invalidated during waiting for response from
+ //runtime and mustFetch was set refetch
+ if (cacheInvalid && mustFetch) {
+ FetchFrames (mustFetch);
+ return;
+ }
+ frames = framesList.ToArray ();
+ fetchingEvent.Set ();
+ }
+ });
+ }
- return frames.ToArray ();
- }
+ public static void FetchFrames(IList threads)
+ {
+ if (threads.Count == 0)
+ return;
+ threads [0].vm.conn.StartBuffering ();
+ foreach (var thread in threads) {
+ thread.FetchFrames ();
+ }
+ threads [0].vm.conn.StopBuffering ();
+ }
public string Name {
get {
@@ -38,7 +79,7 @@ namespace Mono.Debugger.Soft
name = vm.conn.Thread_GetName (id);
return name;
}
- }
+ }
public new long Id {
get {
@@ -111,8 +152,8 @@ namespace Mono.Debugger.Soft
} catch (CommandException ex) {
if (ex.ErrorCode == ErrorCode.INVALID_ARGUMENT)
throw new ArgumentException ("loc doesn't refer to a location in the current method of this thread.", "loc");
- else
- throw;
+
+ throw;
}
}
}
diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/TypeMirror.cs b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/TypeMirror.cs
index 437689163e..3970f2a576 100644
--- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/TypeMirror.cs
+++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/TypeMirror.cs
@@ -806,6 +806,10 @@ namespace Mono.Debugger.Soft
return ObjectMirror.EndInvokeMethodInternal (asyncResult);
}
+ public InvokeResult EndInvokeMethodWithResult (IAsyncResult asyncResult) {
+ return ObjectMirror.EndInvokeMethodInternalWithResult (asyncResult);
+ }
+
#if NET_4_5
public Task InvokeMethodAsync (ThreadMirror thread, MethodMirror method, IList arguments, InvokeOptions options = InvokeOptions.None) {
var tcs = new TaskCompletionSource ();
diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/VirtualMachine.cs b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/VirtualMachine.cs
index 61ee11c183..ee5806d472 100644
--- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/VirtualMachine.cs
+++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/VirtualMachine.cs
@@ -121,12 +121,13 @@ namespace Mono.Debugger.Soft
public void Resume () {
try {
+ InvalidateThreadAndFrameCaches ();
conn.VM_Resume ();
} catch (CommandException ex) {
if (ex.ErrorCode == ErrorCode.NOT_SUSPENDED)
throw new VMNotSuspendedException ();
- else
- throw;
+
+ throw;
}
}
@@ -151,12 +152,44 @@ namespace Mono.Debugger.Soft
conn.ForceDisconnect ();
}
+ HashSet threadsToInvalidate = new HashSet ();
+ ThreadMirror[] threadCache;
+ object threadCacheLocker = new object ();
+
+ void InvalidateThreadAndFrameCaches () {
+ lock (threadsToInvalidate) {
+ foreach (var thread in threadsToInvalidate)
+ thread.InvalidateFrames ();
+ threadsToInvalidate.Clear ();
+ }
+ lock (threadCacheLocker) {
+ threadCache = null;
+ }
+ }
+
+ internal void InvalidateThreadCache () {
+ lock (threadCacheLocker) {
+ threadCache = null;
+ }
+ }
+
+ internal void AddThreadToInvalidateList (ThreadMirror threadMirror)
+ {
+ lock (threadsToInvalidate) {
+ threadsToInvalidate.Add (threadMirror);
+ }
+ }
+
public IList GetThreads () {
- long[] ids = vm.conn.VM_GetThreads ();
- ThreadMirror[] res = new ThreadMirror [ids.Length];
- for (int i = 0; i < ids.Length; ++i)
- res [i] = GetThread (ids [i]);
- return res;
+ lock (threadCacheLocker) {
+ if (threadCache == null) {
+ long[] ids = vm.conn.VM_GetThreads ();
+ threadCache = new ThreadMirror [ids.Length];
+ for (int i = 0; i < ids.Length; ++i)
+ threadCache [i] = GetThread (ids [i]);
+ }
+ return threadCache;
+ }
}
// Same as the mirrorOf methods in JDI
@@ -675,9 +708,11 @@ namespace Mono.Debugger.Soft
vm.notify_vm_event (EventType.VMDeath, suspend_policy, req_id, thread_id, null, ei.ExitCode);
break;
case EventType.ThreadStart:
+ vm.InvalidateThreadCache ();
l.Add (new ThreadStartEvent (vm, req_id, id));
break;
case EventType.ThreadDeath:
+ vm.InvalidateThreadCache ();
l.Add (new ThreadDeathEvent (vm, req_id, id));
break;
case EventType.AssemblyLoad:
@@ -718,8 +753,6 @@ namespace Mono.Debugger.Soft
case EventType.UserLog:
l.Add (new UserLogEvent (vm, req_id, thread_id, ei.Level, ei.Category, ei.Message));
break;
- default:
- break;
}
}
diff --git a/mcs/class/Mono.Debugger.Soft/Test/dtest-app.cs b/mcs/class/Mono.Debugger.Soft/Test/dtest-app.cs
index a057455538..3c9b2877c2 100644
--- a/mcs/class/Mono.Debugger.Soft/Test/dtest-app.cs
+++ b/mcs/class/Mono.Debugger.Soft/Test/dtest-app.cs
@@ -81,6 +81,7 @@ public struct AStruct {
public string s;
public byte k;
public IntPtr j;
+ public int l;
[MethodImplAttribute (MethodImplOptions.NoInlining)]
public int foo (int val) {
@@ -106,6 +107,11 @@ public struct AStruct {
public IntPtr invoke_return_intptr () {
return j;
}
+
+ [MethodImplAttribute (MethodImplOptions.NoInlining)]
+ public void invoke_mutate () {
+ l = 5;
+ }
}
public class GClass {
@@ -953,6 +959,11 @@ public class Tests : TestsBase, ITest2
return 42;
}
+ public void invoke_out (out int foo, out int[] arr) {
+ foo = 5;
+ arr = new int [10];
+ }
+
[MethodImplAttribute (MethodImplOptions.NoInlining)]
public static void exceptions () {
try {
diff --git a/mcs/class/Mono.Debugger.Soft/Test/dtest.cs b/mcs/class/Mono.Debugger.Soft/Test/dtest.cs
index 9d6e5c4127..9a671202a8 100644
--- a/mcs/class/Mono.Debugger.Soft/Test/dtest.cs
+++ b/mcs/class/Mono.Debugger.Soft/Test/dtest.cs
@@ -2110,6 +2110,21 @@ public class DebuggerTests
Assert.AreEqual ("Exception", ex.Exception.Type.Name);
}
+#if NET_4_5
+ // out argument
+ m = t.GetMethod ("invoke_out");
+ var out_task = this_obj.InvokeMethodAsyncWithResult (e.Thread, m, new Value [] { vm.CreateValue (1), vm.CreateValue (null) }, InvokeOptions.ReturnOutArgs);
+ var out_args = out_task.Result.OutArgs;
+ AssertValue (5, out_args [0]);
+ Assert.IsTrue (out_args [1] is ArrayMirror);
+ Assert.AreEqual (10, (out_args [1] as ArrayMirror).Length);
+
+ // without ReturnOutArgs flag
+ out_task = this_obj.InvokeMethodAsyncWithResult (e.Thread, m, new Value [] { vm.CreateValue (1), vm.CreateValue (null) });
+ out_args = out_task.Result.OutArgs;
+ Assert.IsNull (out_args);
+#endif
+
// newobj
m = t.GetMethod (".ctor");
v = t.InvokeMethod (e.Thread, m, null);
@@ -2212,6 +2227,24 @@ public class DebuggerTests
m = t.GetMethod ("invoke_return_int");
v = s.InvokeMethod (e.Thread, m, null);
AssertValue (42, v);
+
+#if NET_4_5
+ // Invoke a method which changes state
+ s = frame.GetArgument (1) as StructMirror;
+ t = s.Type;
+ m = t.GetMethod ("invoke_mutate");
+ var task = s.InvokeMethodAsyncWithResult (e.Thread, m, null, InvokeOptions.ReturnOutThis);
+ var out_this = task.Result.OutThis as StructMirror;
+ AssertValue (5, out_this ["l"]);
+
+ // Without the ReturnOutThis flag
+ s = frame.GetArgument (1) as StructMirror;
+ t = s.Type;
+ m = t.GetMethod ("invoke_mutate");
+ task = s.InvokeMethodAsyncWithResult (e.Thread, m, null);
+ out_this = task.Result.OutThis as StructMirror;
+ Assert.AreEqual (null, out_this);
+#endif
}
[Test]
diff --git a/mcs/class/Mono.Parallel/Documentation/en/Mono.Threading.Tasks/IMonoTaskScheduler.xml b/mcs/class/Mono.Parallel/Documentation/en/Mono.Threading.Tasks/IMonoTaskScheduler.xml
deleted file mode 100644
index 7ea9123207..0000000000
--- a/mcs/class/Mono.Parallel/Documentation/en/Mono.Threading.Tasks/IMonoTaskScheduler.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-
-
-
-
- Mono.Parallel
- 4.0.0.0
-
-
-
- The normal way to use another scheduler with ParalleFx is by creating a new type subclassing . However Mono's ParallelFx has a few specifities which aren't captured by the base API. Developpers can thus also implement this interface with their custom scheduler for better Mono integration.
- The changes added by implementing this interface are totally non-breaking and the assembly will still work perfectly with .NET ParallelFx provided you implement correctly correctly.
-
-
-
-
-
- Method
-
- 4.0.0.0
-
-
- System.Void
-
-
-
-
-
- The task to wait on.
- This method will be called when a thread decides to wait on a task completion. Developpers are free to simply wait on the supplied Task or provide a smarter cooperative waiting mechanism.
- A simple waiting mechanism can be achieved via the following pattern:
-
-
-public void PartiticipateUntil (Task task)
-{
- ManualResetEventSlim evt = new ManualResetEventSlim (false);
- task.ContinueWith (_ => evt.Set (), TaskContinuationOptions.ExecuteSynchronously);
- evt.Wait ();
-}
-
-
-
-
-
-
- Method
-
- 4.0.0.0
-
-
- System.Boolean
-
-
-
-
-
-
-
- Task to wait on.
- Additional preemptive conditions for stopping the waiting.
- An countdown specifying the maximum amount of time the method can last before returning.
- This method will be called when a thread decides to wait on a task completion or a set of condition summarized via the given . Developpers are free to simply wait on the supplied Task/event or provide a smarter cooperative waiting mechanism.
-
- if the method returns because of either event was set or timeout was reached, if the task completed.
- To be added.
-
-
-
-
diff --git a/mcs/class/Mono.Parallel/Documentation/en/Mono.Threading.Tasks/MonoTaskExtensions.xml b/mcs/class/Mono.Parallel/Documentation/en/Mono.Threading.Tasks/MonoTaskExtensions.xml
deleted file mode 100644
index f11a56cd2e..0000000000
--- a/mcs/class/Mono.Parallel/Documentation/en/Mono.Threading.Tasks/MonoTaskExtensions.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-
-
-
-
- Mono.Parallel
- 4.0.0.0
-
-
- System.Object
-
-
-
- Provide public wrappers around internal methods used in Mono implementation of type.
- These extensions are targeted at developers coding custom schedulers so that they can tap into the specificities of the Mono implementation.
-
-
-
-
-
- Method
-
- 4.0.0.0
-
-
- System.Void
-
-
-
-
-
-
- Task to run.
- Action that will be called with the Task that is being scheduled while above Task is executed as a parameter.
- Execute a body and track any other Task scheduling during it which is then passed to the supplied action for specific scheduling.
-
-
-
- If the inner Task that is scheduled has been created with TaskCreationOptions.PreferFairness, the supplied action won't be called and instead the Task will be scheduled normally on the current
-
-
-The following example retrieve a task from a local deque, execute it and add any eventual child Task created/scheduled to its local deque using PushBottom (safe since we are on the same thread the whole time).
-
-
- Task task;
- IConcurrentDeque<Task> deque = new CyclicDeque<Task> ();
-
- if (deque.PopBottom (out task) == PopResult.Succeed))
- task.Execute (deque.PushBottom);
-
-
-
-
-
diff --git a/mcs/class/Mono.Parallel/Documentation/en/Mono.Threading.Tasks/ThreadWorker.xml b/mcs/class/Mono.Parallel/Documentation/en/Mono.Threading.Tasks/ThreadWorker.xml
deleted file mode 100644
index 0063297c1f..0000000000
--- a/mcs/class/Mono.Parallel/Documentation/en/Mono.Threading.Tasks/ThreadWorker.xml
+++ /dev/null
@@ -1,351 +0,0 @@
-
-
-
-
- Mono.Parallel
- 4.0.0.0
-
-
- System.Object
-
-
-
- System.IDisposable
-
-
-
- This class wraps a to provide a suitable ParallelFx worker (i.e. something that process ).
- To be added.
-
-
-
-
-
- Constructor
-
- 4.0.0.0
-
-
-
-
-
-
-
-
-
-
- This is an array containing all other workers created. It's necessary if you want worker cooperating together for getting extra work.
- The position in the previous array where this worker will be placed.
- This is the global data structures that holds the Task when the system starts and is not yet bootstraped. It's also where tasks end up if they are executed with fairness enabled.
- The personnal instance of a deque type used by the worker when storing the tasks its responsible of and letting other workers retrieve them.
- The priority of the underlying thread.
- This is a handle shared (ideally) by all workers to synchronize and deep sleep when there is no more work to do. Setting the handle will wake them up.
- Build a new worker instance.
- To be added.
-
-
-
-
-
- Property
-
- 4.0.0.0
-
-
- Mono.Threading.Tasks.ThreadWorker
-
-
- This [ThreadStatic] field is automatically updated when WorkerMethod method run so that you can check if you are making a re-entrant call on the same thread.
- To be added.
- To be added.
-
-
-
-
-
- Method
-
- 4.0.0.0
-
-
- System.Void
-
-
-
-
-
- Task being scheduled
- This method is called when the currently executing Task tries to schedule another Task as part of its computation. This method allows to redirect the scheduling to a specific place.
- By default the supplied task is added to the ThreadWorker deque via the PushBottom operation.
-
-
-
-
-
- Property
-
- 4.0.0.0
-
-
- Mono.Threading.Tasks.IConcurrentDeque<System.Threading.Tasks.Task>
-
-
- Allow access to the used by the ThreadWorker.
- To be added.
- To be added.
-
-
-
-
-
- Method
-
- 4.0.0.0
-
-
- System.Void
-
-
-
- To be added.
- To be added.
-
-
-
-
-
- Method
-
- 4.0.0.0
-
-
- System.Boolean
-
-
-
-
-
- To be added.
- To be added.
- To be added.
- To be added.
-
-
-
-
-
- Method
-
- 4.0.0.0
-
-
- System.Boolean
-
-
-
-
-
- To be added.
- To be added.
- To be added.
- To be added.
-
-
-
-
-
- Property
-
- 4.0.0.0
-
-
- System.Boolean
-
-
- Tells if the underlying thread has exited or not.
- To be added.
- To be added.
-
-
-
-
-
- Method
-
- 4.0.0.0
-
-
- System.Int32
-
-
-
- To be added.
- To be added.
- To be added.
-
-
-
-
-
- Property
-
- 4.0.0.0
-
-
- System.Int32
-
-
- Return the Id of the underlying thread used by the ThreadWorker.
- To be added.
- To be added.
-
-
-
-
-
- Method
-
- 4.0.0.0
-
-
- System.Void
-
-
-
- To be added.
- To be added.
-
-
-
-
-
- Property
-
- 4.0.0.0
-
-
- Mono.Threading.Tasks.ThreadWorker[]
-
-
- Returns the array of existing ThreadWorker that been initially supplied.
- To be added.
- If you are iterating the array, make sure you skip the current instance of ThreadWorker with value of
-
-
-
-
-
- Property
-
- 4.0.0.0
-
-
- System.Threading.ThreadPriority
-
-
- The priority the underlying thread is running with.
- To be added.
- To be added.
-
-
-
-
-
- Method
-
- 4.0.0.0
-
-
- System.Void
-
-
-
- To be added.
- To be added.
-
-
-
-
-
- Method
-
- 4.0.0.0
-
-
- System.Void
-
-
-
- Stop the underlying thread of this ThreadWorker.
- To be added.
-
-
-
-
-
- Property
-
- 4.0.0.0
-
-
- System.Threading.ManualResetEvent
-
-
- Acces the WaitHandle normally shared by all your ThreadWorker instances to deep sleep or otherwise synchronize on.
- To be added.
- To be added.
-
-
-
-
-
- Method
-
- 4.0.0.0
-
-
- System.Boolean
-
-
-
- This is the method executed by WorkerMethod to do the actual processing of tasks.
-
- if the method processed a while it ran, otherwise.
- By default this method applies the following algorithm:
-- Check if the global data structures contains task and fetch as much as possible into its own deque
- Execute whatever its deque contains
- Do a couple of pass over the other workers to try to steal some work to do
-
-
-
-
-
- Method
-
- 4.0.0.0
-
-
- System.Void
-
-
-
- This is the method executed by the underlying thread.
- By default this method consists of a while loop calling repeatedly and sleeping accordingly when there is no more work to do.
-
-
-
-
-
- Property
-
- 4.0.0.0
-
-
- System.Int32
-
-
- Position of the current instance in the array.
- To be added.
- To be added.
-
-
-
-
diff --git a/mcs/class/Mono.Parallel/Documentation/en/index.xml b/mcs/class/Mono.Parallel/Documentation/en/index.xml
index ab8e4e2994..6739a80561 100644
--- a/mcs/class/Mono.Parallel/Documentation/en/index.xml
+++ b/mcs/class/Mono.Parallel/Documentation/en/index.xml
@@ -29,36 +29,8 @@
-
-
-
Mono.Parallel
-
-
-
-
-
-
-
-
- ExtensionMethod
-
- System.Void
-
-
-
-
-
-
- Task to run.
- Action that will be called with the Task that is being scheduled while above Task is executed as a parameter.
- Execute a body and track any other Task scheduling during it which is then passed to the supplied action for specific scheduling.
-
-
-
-
-
diff --git a/mcs/class/Mono.Parallel/Mono.Parallel.dll.sources b/mcs/class/Mono.Parallel/Mono.Parallel.dll.sources
index 31f320c2ce..57ec8a4604 100644
--- a/mcs/class/Mono.Parallel/Mono.Parallel.dll.sources
+++ b/mcs/class/Mono.Parallel/Mono.Parallel.dll.sources
@@ -11,7 +11,3 @@ Mono.Threading/ReaderWriterLockSlimmer.cs
../corlib/System.Threading.Tasks/CyclicDeque.cs
../corlib/System.Threading.Tasks/IConcurrentDeque.cs
../corlib/System.Threading.Tasks/PopResult.cs
-Mono.Threading.Tasks/ThreadWorker.cs
-Mono.Threading.Tasks/MonoTaskExtensions.cs
-Mono.Threading.Tasks/MonoTaskScheduler.cs
-Mono.Threading.Tasks/FixedTaskScheduler.cs
diff --git a/mcs/class/Mono.Parallel/Mono.Parallel_test.dll.sources b/mcs/class/Mono.Parallel/Mono.Parallel_test.dll.sources
index 19baf2d774..1eb8276dbd 100644
--- a/mcs/class/Mono.Parallel/Mono.Parallel_test.dll.sources
+++ b/mcs/class/Mono.Parallel/Mono.Parallel_test.dll.sources
@@ -2,5 +2,3 @@ Mono.Collections.Concurrent/CollectionStressTestHelper.cs
Mono.Collections.Concurrent/ConcurrentSkipListTests.cs
Mono.Threading/ParallelTestHelper.cs
Mono.Threading/SnziTests.cs
-Mono.Threading.Tasks/MonoTaskExtensionsTests.cs
-Mono.Threading.Tasks/MonoTaskSchedulerTests.cs
diff --git a/mcs/class/Mono.Parallel/Mono.Threading.Tasks/FixedTaskScheduler.cs b/mcs/class/Mono.Parallel/Mono.Threading.Tasks/FixedTaskScheduler.cs
deleted file mode 100644
index da656a5786..0000000000
--- a/mcs/class/Mono.Parallel/Mono.Threading.Tasks/FixedTaskScheduler.cs
+++ /dev/null
@@ -1,139 +0,0 @@
-// Scheduler.cs
-//
-// Copyright (c) 2008 Jérémie "Garuma" Laval
-//
-// 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.
-//
-//
-
-#if NET_4_0
-using System;
-using System.Threading;
-using System.Threading.Tasks;
-using System.Collections.Concurrent;
-
-namespace Mono.Threading.Tasks
-{
- public class FixedTaskScheduler: TaskScheduler, IMonoTaskScheduler
- {
- readonly IProducerConsumerCollection workQueue;
- readonly ThreadWorker[] workers;
- readonly ManualResetEvent pulseHandle = new ManualResetEvent (false);
-
- public FixedTaskScheduler ()
- : this (Environment.ProcessorCount, ThreadPriority.Normal)
- {
-
- }
-
- public FixedTaskScheduler (int maxWorker, ThreadPriority priority)
- {
- workQueue = new ConcurrentQueue ();
- workers = new ThreadWorker [maxWorker];
-
- for (int i = 0; i < maxWorker; i++) {
- workers [i] = new ThreadWorker (workers, i, workQueue, new CyclicDeque (), priority, pulseHandle);
- workers [i].Pulse ();
- }
- }
-
- protected override void QueueTask (Task t)
- {
- // Add to the shared work pool
- workQueue.TryAdd (t);
- // Wake up some worker if they were asleep
- PulseAll ();
- }
-
- public void MonoParticipateUntil (Task task)
- {
- if (task.IsCompleted)
- return;
-
- ManualResetEventSlim evt = new ManualResetEventSlim (false);
- task.ContinueWith (_ => evt.Set (), TaskContinuationOptions.ExecuteSynchronously);
- if (evt.IsSet || task.IsCompleted)
- return;
-
- ParticipateUntilInternal (task, evt, -1);
- }
-
- public bool MonoParticipateUntil (Task task, ManualResetEventSlim evt, int millisecondsTimeout)
- {
- if (task.IsCompleted)
- return false;
-
- bool isFromPredicate = true;
- task.ContinueWith (_ => { isFromPredicate = false; evt.Set (); }, TaskContinuationOptions.ExecuteSynchronously);
-
- ParticipateUntilInternal (task, evt, millisecondsTimeout);
-
- if (task.IsCompleted)
- return false;
-
- return isFromPredicate;
- }
-
- public void ParticipateUntilInternal (Task self, ManualResetEventSlim evt, int millisecondsTimeout)
- {
- ThreadWorker.ParticipativeWorkerMethod (self, evt, millisecondsTimeout, workQueue, workers, pulseHandle, (a, b) => true);
- }
-
- static bool TaskCompletedPredicate (Task self)
- {
- return self.IsCompleted;
- }
-
- public void PulseAll ()
- {
- pulseHandle.Set ();
- }
-
- public void Dispose ()
- {
- foreach (ThreadWorker w in workers)
- w.Dispose ();
- }
-
- #region Scheduler dummy stubs
- protected override System.Collections.Generic.IEnumerable GetScheduledTasks ()
- {
- throw new System.NotImplementedException();
- }
-
- protected override bool TryDequeue (Task task)
- {
- throw new System.NotImplementedException();
- }
-
- protected override bool TryExecuteTaskInline (Task task, bool taskWasPreviouslyQueued)
- {
- task.Execute (null);
- return true;
- }
-
- public override int MaximumConcurrencyLevel {
- get {
- return base.MaximumConcurrencyLevel;
- }
- }
- #endregion
- }
-}
-#endif
diff --git a/mcs/class/Mono.Parallel/Mono.Threading.Tasks/MonoTaskExtensions.cs b/mcs/class/Mono.Parallel/Mono.Threading.Tasks/MonoTaskExtensions.cs
deleted file mode 100644
index 1b52857040..0000000000
--- a/mcs/class/Mono.Parallel/Mono.Threading.Tasks/MonoTaskExtensions.cs
+++ /dev/null
@@ -1,54 +0,0 @@
-//
-// MonoTaskExtensions.cs
-//
-// Author:
-// Jérémie "Garuma" Laval
-//
-// Copyright (c) 2011 Jérémie "Garuma" Laval
-//
-// 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.
-
-#if NET_4_0
-
-using System;
-using System.Threading.Tasks;
-using System.Reflection;
-
-namespace Mono.Threading.Tasks
-{
- public static class MonoTaskExtensions
- {
- readonly static Action> internalExecute = null;
-
- static MonoTaskExtensions ()
- {
- // Initialize internal execute
- var method = typeof(Task).GetMethod ("Execute", BindingFlags.Instance | BindingFlags.NonPublic);
- internalExecute = (Action>)Delegate.CreateDelegate (typeof(Action>), method);
- }
-
- // Allow external worker to call into the otherwise internal corresponding method of Task
- public static void Execute (this Task task, Action childWorkAdder)
- {
- internalExecute (task, childWorkAdder);
- }
- }
-}
-
-#endif
diff --git a/mcs/class/Mono.Parallel/Mono.Threading.Tasks/MonoTaskScheduler.cs b/mcs/class/Mono.Parallel/Mono.Threading.Tasks/MonoTaskScheduler.cs
deleted file mode 100644
index a21c323138..0000000000
--- a/mcs/class/Mono.Parallel/Mono.Threading.Tasks/MonoTaskScheduler.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// MonoTaskScheduler.cs
-//
-// Author:
-// Jérémie "Garuma" Laval
-//
-// Copyright (c) 2011 Jérémie "Garuma" Laval
-//
-// 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.
-
-#if NET_4_0
-
-using System;
-using System.Threading;
-using System.Threading.Tasks;
-
-namespace Mono.Threading.Tasks
-{
- public interface IMonoTaskScheduler
- {
- void MonoParticipateUntil (Task task);
- bool MonoParticipateUntil (Task task, ManualResetEventSlim predicateEvt, int millisecondsTimeout);
- }
-}
-
-#endif
diff --git a/mcs/class/Mono.Parallel/Mono.Threading.Tasks/ThreadWorker.cs b/mcs/class/Mono.Parallel/Mono.Threading.Tasks/ThreadWorker.cs
deleted file mode 100644
index 575763cc43..0000000000
--- a/mcs/class/Mono.Parallel/Mono.Threading.Tasks/ThreadWorker.cs
+++ /dev/null
@@ -1,421 +0,0 @@
-// ThreadWorker.cs
-//
-// Copyright (c) 2008 Jérémie "Garuma" Laval
-//
-// 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.
-//
-//
-
-#if NET_4_0
-using System;
-using System.Threading;
-using System.Collections.Concurrent;
-using System.Threading.Tasks;
-using Watch = System.Diagnostics.Stopwatch;
-
-namespace Mono.Threading.Tasks
-{
- public class ThreadWorker : IDisposable
- {
- Thread workerThread;
-
- /* This field is used when a TheadWorker have to call Task.Wait
- * which bring him back here with the static WorkerMethod although
- * it's more optimized for him to continue calling its own WorkerMethod
- */
- [ThreadStatic]
- static ThreadWorker autoReference;
-
- readonly IConcurrentDeque dDeque;
- readonly ThreadWorker[] others;
- readonly ManualResetEvent waitHandle;
- readonly IProducerConsumerCollection sharedWorkQueue;
- readonly ThreadPriority threadPriority;
-
- // Flag to tell if workerThread is running
- int started = 0;
-
- readonly int workerLength;
- readonly int workerPosition;
- const int maxRetry = 3;
-
- const int sleepThreshold = 100;
- int deepSleepTime = 8;
- readonly Action adder;
-
- Task currentTask;
-
- public ThreadWorker (ThreadWorker[] others,
- int workerPosition,
- IProducerConsumerCollection sharedWorkQueue,
- IConcurrentDeque dDeque,
- ThreadPriority priority,
- ManualResetEvent handle)
- {
- this.others = others;
- this.dDeque = dDeque;
- this.sharedWorkQueue = sharedWorkQueue;
- this.workerLength = others.Length;
- this.workerPosition = workerPosition;
- this.waitHandle = handle;
- this.threadPriority = priority;
- this.adder = new Action (ChildWorkAdder);
-
- InitializeUnderlyingThread ();
- }
-
- protected virtual void InitializeUnderlyingThread ()
- {
- this.workerThread = new Thread (WorkerMethodWrapper);
-
- this.workerThread.IsBackground = true;
- this.workerThread.Priority = threadPriority;
- this.workerThread.Name = "ParallelFxThreadWorker";
- }
-
- public virtual void Dispose ()
- {
- Stop ();
- if (workerThread.ThreadState != ThreadState.Stopped)
- workerThread.Abort ();
- }
-
- public virtual void Pulse ()
- {
- if (started == 1)
- return;
-
- // If the thread was stopped then set it in use and restart it
- int result = Interlocked.Exchange (ref started, 1);
- if (result != 0)
- return;
-
- if (this.workerThread.ThreadState != ThreadState.Unstarted) {
- InitializeUnderlyingThread ();
- }
-
- workerThread.Start ();
- }
-
- public virtual void Stop ()
- {
- // Set the flag to stop so that the while in the thread will stop
- // doing its infinite loop.
- started = 0;
- }
-
- // This is the actual method called in the Thread
- protected virtual void WorkerMethodWrapper ()
- {
- int sleepTime = 0;
- autoReference = this;
- bool wasWokenUp = false;
-
- // Main loop
- while (started == 1) {
- bool result = false;
-
- result = WorkerMethod ();
- if (!result && wasWokenUp)
- waitHandle.Reset ();
- wasWokenUp = false;
-
- Thread.Yield ();
-
- if (result) {
- deepSleepTime = 8;
- sleepTime = 0;
- continue;
- }
-
- // If we are spinning too much, have a deeper sleep
- if (++sleepTime > sleepThreshold && sharedWorkQueue.Count == 0) {
- wasWokenUp = waitHandle.WaitOne ((deepSleepTime = deepSleepTime >= 0x4000 ? 0x4000 : deepSleepTime << 1));
- }
- }
-
- started = 0;
- }
-
- // Main method, used to do all the logic of retrieving, processing and stealing work.
- protected virtual bool WorkerMethod ()
- {
- bool result = false;
- bool hasStolenFromOther;
-
- do {
- hasStolenFromOther = false;
-
- Task value;
-
- // We fill up our work deque concurrently with other ThreadWorker
- while (sharedWorkQueue.Count > 0) {
- waitHandle.Set ();
-
- while (sharedWorkQueue.TryTake (out value)) {
- dDeque.PushBottom (value);
- }
-
- // Now we process our work
- while (dDeque.PopBottom (out value) == PopResult.Succeed) {
- waitHandle.Set ();
- ExecuteTask (value, ref result);
- }
- }
-
- // When we have finished, steal from other worker
- ThreadWorker other;
-
- // Repeat the operation a little so that we can let other things process.
- for (int j = 0; j < maxRetry; ++j) {
- int len = workerLength + workerPosition;
- // Start stealing with the ThreadWorker at our right to minimize contention
- for (int it = workerPosition + 1; it < len; ++it) {
- int i = it % workerLength;
- if ((other = others [i]) == null || other == this)
- continue;
-
- // Maybe make this steal more than one item at a time, see TODO.
- while (other.dDeque.PopTop (out value) == PopResult.Succeed) {
- if (!hasStolenFromOther)
- waitHandle.Set ();
-
- hasStolenFromOther = true;
- ExecuteTask (value, ref result);
- }
- }
- }
- } while (sharedWorkQueue.Count > 0 || hasStolenFromOther);
-
- return result;
- }
-
- void ExecuteTask (Task value, ref bool result)
- {
- if (value == null)
- return;
-
- var saveCurrent = currentTask;
- currentTask = value;
- value.Execute (adder);
- result = true;
- currentTask = saveCurrent;
- }
-
- // Almost same as above but with an added predicate and treating one item at a time.
- // It's used by Scheduler Participate(...) method for special waiting case like
- // Task.WaitAll(someTasks) or Task.WaitAny(someTasks)
- // Predicate should be really fast and not blocking as it is called a good deal of time
- // Also, the method skip tasks that are LongRunning to avoid blocking (Task are not LongRunning by default)
- public static void ParticipativeWorkerMethod (Task self,
- ManualResetEventSlim predicateEvt,
- int millisecondsTimeout,
- IProducerConsumerCollection sharedWorkQueue,
- ThreadWorker[] others,
- ManualResetEvent evt,
- Func checkTaskFitness)
- {
- const int stage1 = 5, stage2 = 0;
- int tries = 50;
- WaitHandle[] handles = null;
- Watch watch = Watch.StartNew ();
- if (millisecondsTimeout == -1)
- millisecondsTimeout = int.MaxValue;
- bool aggressive = false;
- bool hasAutoReference = autoReference != null;
- Action adder = null;
-
- while (!predicateEvt.IsSet && watch.ElapsedMilliseconds < millisecondsTimeout && !self.IsCompleted) {
- // We try to execute the self task as it may be the simplest way to unlock
- // the situation
- if (self.Status == TaskStatus.WaitingToRun) {
- self.Execute (hasAutoReference ? autoReference.adder : (Action)null);
- if (predicateEvt.IsSet || watch.ElapsedMilliseconds > millisecondsTimeout)
- return;
- }
-
- Task value;
-
- // If we are in fact a normal ThreadWorker, use our own deque
- if (hasAutoReference) {
- var enumerable = autoReference.dDeque.GetEnumerable ();
- if (adder == null)
- adder = hasAutoReference ? autoReference.adder : (Action)null;
-
- if (enumerable != null) {
- foreach (var t in enumerable) {
- if (t == null)
- continue;
-
- if (checkTaskFitness (self, t))
- t.Execute (adder);
-
- if (predicateEvt.IsSet || watch.ElapsedMilliseconds > millisecondsTimeout)
- return;
- }
- }
- }
-
- int count = sharedWorkQueue.Count;
-
- // Dequeue only one item as we have restriction
- while (--count >= 0 && sharedWorkQueue.TryTake (out value) && value != null) {
- evt.Set ();
- if (checkTaskFitness (self, value) || aggressive)
- value.Execute (null);
- else {
- if (autoReference == null)
- sharedWorkQueue.TryAdd (value);
- else
- autoReference.dDeque.PushBottom (value);
- evt.Set ();
- }
-
- if (predicateEvt.IsSet || watch.ElapsedMilliseconds > millisecondsTimeout)
- return;
- }
-
- // First check to see if we comply to predicate
- if (predicateEvt.IsSet || watch.ElapsedMilliseconds > millisecondsTimeout)
- return;
-
- // Try to complete other work by stealing since our desired tasks may be in other worker
- ThreadWorker other;
- for (int i = 0; i < others.Length; i++) {
- if ((other = others [i]) == autoReference || other == null)
- continue;
-
- if (other.dDeque.PopTop (out value) == PopResult.Succeed && value != null) {
- evt.Set ();
- if (checkTaskFitness (self, value) || aggressive)
- value.Execute (null);
- else {
- if (autoReference == null)
- sharedWorkQueue.TryAdd (value);
- else
- autoReference.dDeque.PushBottom (value);
- evt.Set ();
- }
- }
-
- if (predicateEvt.IsSet || watch.ElapsedMilliseconds > millisecondsTimeout)
- return;
- }
-
- /* Waiting is split in 4 phases
- * - until stage 1 we simply yield the thread to let others add data
- * - between stage 1 and stage2 we use ManualResetEventSlim light waiting mechanism
- * - after stage2 we fall back to the heavier WaitHandle waiting mechanism
- * - if really the situation isn't evolving after a couple of sleep, we disable
- * task fitness check altogether
- */
- if (--tries > stage1)
- Thread.Yield ();
- else if (tries >= stage2)
- predicateEvt.Wait (ComputeTimeout (5, millisecondsTimeout, watch));
- else {
- if (tries == stage2 - 1)
- handles = new [] { predicateEvt.WaitHandle, evt };
- System.Threading.WaitHandle.WaitAny (handles, ComputeTimeout (1000, millisecondsTimeout, watch));
- if (tries == stage2 - 10)
- aggressive = true;
- }
- }
- }
-
- public static ThreadWorker AutoReference {
- get {
- return autoReference;
- }
- set {
- autoReference = value;
- }
- }
-
- protected IConcurrentDeque Deque {
- get {
- return dDeque;
- }
- }
-
- protected ThreadWorker[] Others {
- get {
- return others;
- }
- }
-
- protected ManualResetEvent WaitHandle {
- get {
- return waitHandle;
- }
- }
-
- protected ThreadPriority Priority {
- get {
- return threadPriority;
- }
- }
-
- protected int WorkerPosition {
- get {
- return workerPosition;
- }
- }
-
- protected virtual void ChildWorkAdder (Task t)
- {
- dDeque.PushBottom (t);
- waitHandle.Set ();
- }
-
- static int ComputeTimeout (int proposed, int timeout, Watch watch)
- {
- return timeout == int.MaxValue ? proposed : System.Math.Min (proposed, System.Math.Max (0, (int)(timeout - watch.ElapsedMilliseconds)));
- }
-
- public bool Finished {
- get {
- return started == 0;
- }
- }
-
- public int Id {
- get {
- return workerThread.ManagedThreadId;
- }
- }
-
- public virtual bool Equals (ThreadWorker other)
- {
- return (other == null) ? false : object.ReferenceEquals (this.dDeque, other.dDeque);
- }
-
- public override bool Equals (object obj)
- {
- ThreadWorker temp = obj as ThreadWorker;
- return temp == null ? false : Equals (temp);
- }
-
- public override int GetHashCode ()
- {
- return workerThread.ManagedThreadId.GetHashCode ();
- }
- }
-}
-#endif
diff --git a/mcs/class/Mono.Parallel/Test/Mono.Threading.Tasks/MonoTaskExtensionsTests.cs b/mcs/class/Mono.Parallel/Test/Mono.Threading.Tasks/MonoTaskExtensionsTests.cs
deleted file mode 100644
index 62f939b963..0000000000
--- a/mcs/class/Mono.Parallel/Test/Mono.Threading.Tasks/MonoTaskExtensionsTests.cs
+++ /dev/null
@@ -1,67 +0,0 @@
-//
-// MonoTaskExtensionsTests.cs
-//
-// Author:
-// Jérémie "Garuma" Laval
-//
-// Copyright (c) 2011 Jérémie "Garuma" Laval
-//
-// 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.
-
-#if NET_4_0
-
-using System;
-using System.Threading;
-using System.Threading.Tasks;
-
-using Mono.Threading.Tasks;
-
-using NUnit.Framework;
-
-namespace MonoTests.Mono.Threading.Tasks
-{
- [TestFixtureAttribute]
- public class MonoTaskExtensionsTests
- {
- [Test]
- public void SimpleExecutionTest ()
- {
- bool executed = false;
- Task t = new Task (() => executed = true);
- t.Execute (delegate {});
-
- Assert.IsTrue (executed);
- }
-
- [Test]
- public void ExecutionWithChildCreationTest ()
- {
- bool executed = false;
- bool childRetrieved = false;
-
- Task t = new Task (() => { Task.Factory.StartNew (() => Console.WriteLine ("execution")); executed = true; });
- t.Execute ((child) => childRetrieved = child != null);
-
- Assert.IsTrue (executed);
- Assert.IsTrue (childRetrieved);
- }
- }
-}
-
-#endif
diff --git a/mcs/class/Mono.Parallel/Test/Mono.Threading.Tasks/MonoTaskSchedulerTests.cs b/mcs/class/Mono.Parallel/Test/Mono.Threading.Tasks/MonoTaskSchedulerTests.cs
deleted file mode 100644
index 31d3b614a1..0000000000
--- a/mcs/class/Mono.Parallel/Test/Mono.Threading.Tasks/MonoTaskSchedulerTests.cs
+++ /dev/null
@@ -1,108 +0,0 @@
-//
-// MonoTaskSchedulerTests.cs
-//
-// Author:
-// Jérémie "Garuma" Laval
-//
-// Copyright (c) 2011 Jérémie "Garuma" Laval
-//
-// 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.
-
-#if NET_4_0
-
-using System;
-using System.Linq;
-using System.Threading;
-using System.Threading.Tasks;
-using System.Collections.Generic;
-
-using Mono.Threading.Tasks;
-
-using NUnit.Framework;
-
-namespace MonoTests.Mono.Threading.Tasks
-{
- [TestFixtureAttribute]
- public class MonoTaskSchedulerTests
- {
- class DummyScheduler : TaskScheduler, IMonoTaskScheduler
- {
- public bool ParticipateMethod1 {
- get; set;
- }
-
- public bool ParticipateMethod2 {
- get; set;
- }
-
- protected override IEnumerable GetScheduledTasks ()
- {
- return Enumerable.Empty ();
- }
-
- protected override void QueueTask (Task task)
- {
-
- }
-
- protected override bool TryExecuteTaskInline (Task task, bool taskWasPreviouslyQueued)
- {
- throw new NotSupportedException ();
- }
-
- public void MonoParticipateUntil (Task task)
- {
- ParticipateMethod1 = true;
- }
-
- public bool MonoParticipateUntil (Task task, ManualResetEventSlim predicateEvt, int millisecondsTimeout)
- {
- ParticipateMethod2 = true;
- return true;
- }
- }
-
- [Test]
- public void MethodRegisteringTest ()
- {
- DummyScheduler sched = new DummyScheduler ();
-
- Task t = new Task (delegate { Thread.Sleep (100); });
- t.Start (sched);
- t.Wait ();
-
- Assert.IsTrue (sched.ParticipateMethod1);
- }
-
- [Test]
- public void Method2RegisteringTest ()
- {
- DummyScheduler sched = new DummyScheduler ();
-
- Task t = new Task (delegate { Thread.Sleep (100); });
- t.Start (sched);
- t.Wait (100);
-
- Assert.IsTrue (sched.ParticipateMethod2);
- }
-
- }
-}
-
-#endif
diff --git a/mcs/class/Mono.Posix/Mono.Unix.Native/Syscall.cs.REMOVED.git-id b/mcs/class/Mono.Posix/Mono.Unix.Native/Syscall.cs.REMOVED.git-id
index f1a69089a3..8fd3f2fdb3 100644
--- a/mcs/class/Mono.Posix/Mono.Unix.Native/Syscall.cs.REMOVED.git-id
+++ b/mcs/class/Mono.Posix/Mono.Unix.Native/Syscall.cs.REMOVED.git-id
@@ -1 +1 @@
-7ba53e922bf7d1dd53db2206246a8281c522af7c
\ No newline at end of file
+0b8f1e6fa028cea47e904a1fbb9ce1a061dbc9c7
\ No newline at end of file
diff --git a/mcs/class/Mono.Security/Mono.Security.Cryptography/DiffieHellmanManaged.cs b/mcs/class/Mono.Security/Mono.Security.Cryptography/DiffieHellmanManaged.cs
index 3fae43a492..38b1dea8de 100644
--- a/mcs/class/Mono.Security/Mono.Security.Cryptography/DiffieHellmanManaged.cs
+++ b/mcs/class/Mono.Security/Mono.Security.Cryptography/DiffieHellmanManaged.cs
@@ -156,9 +156,9 @@ namespace Mono.Security.Cryptography {
// clear keys
protected override void Dispose(bool disposing) {
if (!m_Disposed) {
- m_P.Clear();
- m_G.Clear();
- m_X.Clear();
+ if (m_P != null) m_P.Clear();
+ if (m_G != null) m_G.Clear();
+ if (m_X != null) m_X.Clear();
}
m_Disposed = true;
}
diff --git a/mcs/class/System.ComponentModel.Composition.4.5/System.ComponentModel.Composition.dll.sources b/mcs/class/System.ComponentModel.Composition.4.5/System.ComponentModel.Composition.dll.sources
index 5072270d8f..ac779fcd51 100644
--- a/mcs/class/System.ComponentModel.Composition.4.5/System.ComponentModel.Composition.dll.sources
+++ b/mcs/class/System.ComponentModel.Composition.4.5/System.ComponentModel.Composition.dll.sources
@@ -22,10 +22,8 @@ src/ComponentModel/Microsoft/Internal/GenerationServices.cs
src/ComponentModel/Microsoft/Internal/Runtime/Serialization/SerializationServices.cs
src/ComponentModel/Microsoft/Internal/Collections/CollectionServices.cs
src/ComponentModel/Microsoft/Internal/Collections/WeakReferenceCollection.cs
-src/ComponentModel/Microsoft/Internal/Collections/ReadOnlyDictionaryDebuggerProxy.cs
src/ComponentModel/Microsoft/Internal/Collections/CollectionServices.CollectionOfObject.cs
src/ComponentModel/Microsoft/Internal/Collections/EnumerableCardinality.cs
-src/ComponentModel/Microsoft/Internal/Collections/ReadOnlyDictionary.cs
src/ComponentModel/System/LazyOfTTMetadata.cs
src/ComponentModel/System/ComponentModel/Composition/PartMetadataAttribute.cs
src/ComponentModel/System/ComponentModel/Composition/ExceptionBuilder.cs
diff --git a/mcs/class/System.ComponentModel.Composition.4.5/src/ComponentModel/Microsoft/Internal/Collections/ReadOnlyDictionary.cs b/mcs/class/System.ComponentModel.Composition.4.5/src/ComponentModel/Microsoft/Internal/Collections/ReadOnlyDictionary.cs
deleted file mode 100644
index 03269317f5..0000000000
--- a/mcs/class/System.ComponentModel.Composition.4.5/src/ComponentModel/Microsoft/Internal/Collections/ReadOnlyDictionary.cs
+++ /dev/null
@@ -1,106 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Diagnostics;
-using Microsoft.Internal;
-
-// This is using the desktop namespace for ReadOnlyDictionary, the source code is in Microsoft\Internal\Collections to keep it seperate from the main MEF codebase.
-namespace System.Collections.ObjectModel
-{
-
- [DebuggerDisplay("Count = {Count}")]
- [DebuggerTypeProxy(typeof(ReadOnlyDictionaryDebuggerProxy<,>))]
- internal sealed partial class ReadOnlyDictionary : IDictionary
- {
- private readonly IDictionary _innerDictionary;
-
- public ReadOnlyDictionary(IDictionary dictionary)
- {
- this._innerDictionary = dictionary ?? new Dictionary(0);
- }
-
- public int Count
- {
- get { return this._innerDictionary.Count; }
- }
-
- public bool IsReadOnly
- {
- get { return true; }
- }
-
- public ICollection Keys
- {
- get { return this._innerDictionary.Keys; }
- }
-
- public TValue this[TKey key]
- {
- get { return this._innerDictionary[key]; }
- set { throw new NotSupportedException(Strings.NotSupportedReadOnlyDictionary); }
- }
-
- public ICollection Values
- {
- get { return this._innerDictionary.Values; }
- }
-
- public bool Contains(KeyValuePair item)
- {
- return this._innerDictionary.Contains(item);
- }
-
- public bool ContainsKey(TKey key)
- {
- return this._innerDictionary.ContainsKey(key);
- }
-
- public void CopyTo(KeyValuePair[] array, int arrayIndex)
- {
- this._innerDictionary.CopyTo(array, arrayIndex);
- }
-
- public IEnumerator> GetEnumerator()
- {
- return this._innerDictionary.GetEnumerator();
- }
-
- public bool TryGetValue(TKey key, out TValue value)
- {
- return this._innerDictionary.TryGetValue(key, out value);
- }
-
- IEnumerator IEnumerable.GetEnumerator()
- {
- return this._innerDictionary.GetEnumerator();
- }
-
- void IDictionary.Add(TKey key, TValue value)
- {
- throw new NotSupportedException(Strings.NotSupportedReadOnlyDictionary);
- }
-
- void ICollection>.Add(KeyValuePair item)
- {
- throw new NotSupportedException(Strings.NotSupportedReadOnlyDictionary);
- }
-
- void ICollection>.Clear()
- {
- throw new NotSupportedException(Strings.NotSupportedReadOnlyDictionary);
- }
-
- bool IDictionary.Remove(TKey key)
- {
- throw new NotSupportedException(Strings.NotSupportedReadOnlyDictionary);
- }
-
- bool ICollection>.Remove(KeyValuePair item)
- {
- throw new NotSupportedException(Strings.NotSupportedReadOnlyDictionary);
- }
- }
-}
diff --git a/mcs/class/System.ComponentModel.Composition.4.5/src/ComponentModel/Microsoft/Internal/Collections/ReadOnlyDictionaryDebuggerProxy.cs b/mcs/class/System.ComponentModel.Composition.4.5/src/ComponentModel/Microsoft/Internal/Collections/ReadOnlyDictionaryDebuggerProxy.cs
deleted file mode 100644
index 9dda8f4bc5..0000000000
--- a/mcs/class/System.ComponentModel.Composition.4.5/src/ComponentModel/Microsoft/Internal/Collections/ReadOnlyDictionaryDebuggerProxy.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Linq;
-using Microsoft.Internal;
-
-namespace System.Collections.ObjectModel
-{
-
- // NOTE: This type cannot be a nested proxy of ReadOnlyDictionary due to a bug
- // in the Visual Studio Debugger which causes it to ignore nested generic proxies.
- internal class ReadOnlyDictionaryDebuggerProxy
- {
- private readonly ReadOnlyDictionary _dictionary;
-
- public ReadOnlyDictionaryDebuggerProxy(ReadOnlyDictionary dictionary)
- {
- Requires.NotNull(dictionary, "dictionary");
-
- _dictionary = dictionary;
- }
-
- [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
- public KeyValuePair[] Items
- {
- // NOTE: This shouldn't be cached, so that on every query of
- // the current value of the underlying dictionary is respected.
- get { return this._dictionary.ToArray(); }
- }
- }
-}
diff --git a/mcs/class/System.Data/Mono.Data.SqlExpressions/Tokenizer.cs b/mcs/class/System.Data/Mono.Data.SqlExpressions/Tokenizer.cs
index 3208718e7d..256da0cfa1 100644
--- a/mcs/class/System.Data/Mono.Data.SqlExpressions/Tokenizer.cs
+++ b/mcs/class/System.Data/Mono.Data.SqlExpressions/Tokenizer.cs
@@ -136,10 +136,10 @@ namespace Mono.Data.SqlExpressions {
string str = sb.ToString ();
- if (str.IndexOf(".") == -1)
- return Int64.Parse (str);
- else
- return double.Parse (str);
+ if (str.IndexOf ('.') < 0)
+ return Int64.Parse (str, CultureInfo.InvariantCulture);
+
+ return double.Parse (str, CultureInfo.InvariantCulture);
}
private char ProcessEscapes(char c)
@@ -327,7 +327,7 @@ namespace Mono.Data.SqlExpressions {
case '#':
string date = ReadString ('#');
- val = DateTime.Parse (date);
+ val = DateTime.Parse (date, CultureInfo.InvariantCulture);
return Token.DateLiteral;
case '\'':
diff --git a/mcs/class/System.Data/System.Data/DataColumn.cs b/mcs/class/System.Data/System.Data/DataColumn.cs
index 166be8d8f4..7e7cedae6f 100644
--- a/mcs/class/System.Data/System.Data/DataColumn.cs
+++ b/mcs/class/System.Data/System.Data/DataColumn.cs
@@ -474,7 +474,7 @@ namespace System.Data {
public string Expression {
get { return _expression; }
set {
- if (value == null)
+ if (value == null || value.Trim () == string.Empty)
value = String.Empty;
CompileExpression (value);
diff --git a/mcs/class/System.Data/System.Data/DataRow.cs b/mcs/class/System.Data/System.Data/DataRow.cs
index 6b6299f41a..f3fa2a8e77 100644
--- a/mcs/class/System.Data/System.Data/DataRow.cs
+++ b/mcs/class/System.Data/System.Data/DataRow.cs
@@ -134,10 +134,7 @@ namespace System.Data {
public object this [string columnName] {
get { return this [columnName, DataRowVersion.Default]; }
set {
- DataColumn column = _table.Columns [columnName];
- if (column == null)
- throw new ArgumentException ("The column '" + columnName +
- "' does not belong to the table : " + _table.TableName);
+ DataColumn column = GetColumn (columnName);
this [column.Ordinal] = value;
}
}
@@ -202,10 +199,7 @@ namespace System.Data {
///
public object this [string columnName, DataRowVersion version] {
get {
- DataColumn column = _table.Columns [columnName];
- if (column == null)
- throw new ArgumentException ("The column '" + columnName +
- "' does not belong to the table : " + _table.TableName);
+ DataColumn column = GetColumn (columnName);
return this [column.Ordinal, version];
}
}
@@ -1248,7 +1242,7 @@ namespace System.Data {
///
public bool IsNull (string columnName)
{
- return IsNull (Table.Columns [columnName]);
+ return IsNull (GetColumn (columnName));
}
///
@@ -1257,6 +1251,17 @@ namespace System.Data {
///
public bool IsNull (DataColumn column, DataRowVersion version)
{
+ if (column == null)
+ throw new ArgumentNullException ("column");
+
+ // use the expresion if there is one
+ if (column.Expression != String.Empty) {
+ // FIXME: how does this handle 'version'?
+ // TODO: Can we avoid the Eval each time by using the cached value?
+ object o = column.CompiledExpression.Eval (this);
+ return o == null && o == DBNull.Value;
+ }
+
return column.DataContainer.IsNull (IndexFromVersion (version));
}
@@ -1692,5 +1697,15 @@ namespace System.Data {
}
}
#endif // NET_2_0
+
+ DataColumn GetColumn (string columnName)
+ {
+ DataColumn column = _table.Columns [columnName];
+
+ if (column == null)
+ throw new ArgumentException ("The column '" + columnName + "' does not belong to the table " + _table.TableName);
+
+ return column;
+ }
}
}
diff --git a/mcs/class/System.Data/Test/System.Data/DataColumnTest2.cs b/mcs/class/System.Data/Test/System.Data/DataColumnTest2.cs
index f0f68c3207..096c72fd1c 100644
--- a/mcs/class/System.Data/Test/System.Data/DataColumnTest2.cs
+++ b/mcs/class/System.Data/Test/System.Data/DataColumnTest2.cs
@@ -542,6 +542,23 @@ namespace MonoTests.System.Data
Assert.AreEqual(sExpression,dc.Expression, "dce#2");
}
+ [Test]
+ public void Expression_Whitespace ()
+ {
+ DataColumn dc = new DataColumn ("ColName", typeof(string));
+
+ string plainWhitespace = " ";
+ string surroundWhitespace = " 'abc' ";
+
+ Assert.AreEqual (string.Empty, dc.Expression, "dce#1");
+
+ dc.Expression = plainWhitespace;
+ Assert.AreEqual (string.Empty, dc.Expression, "dce#2");
+
+ dc.Expression = surroundWhitespace;
+ Assert.AreEqual (surroundWhitespace, dc.Expression, "dce#3");
+ }
+
[Test]
public void Expression_Exceptions()
{
diff --git a/mcs/class/System.Data/Test/System.Data/DataRowTest2.cs b/mcs/class/System.Data/Test/System.Data/DataRowTest2.cs
index 14333e2201..4dc0d77495 100644
--- a/mcs/class/System.Data/Test/System.Data/DataRowTest2.cs
+++ b/mcs/class/System.Data/Test/System.Data/DataRowTest2.cs
@@ -2125,6 +2125,59 @@ namespace MonoTests.System.Data
#endregion
}
+ [Test]
+ public void IsNull_BeforeGetValue ()
+ {
+ DataTable table = new DataTable ();
+
+ // add the row, with the value in the column
+ DataColumn staticColumn = table.Columns.Add ("static", typeof(string), null); // static
+ DataRow row = table.Rows.Add ("the value");
+ Assert.IsFalse (row.IsNull ("static"), "static null check failed");
+ Assert.AreEqual ("the value", row ["static"], "static value check failed");
+
+ // add the first derived column
+ DataColumn firstColumn = table.Columns.Add ("first", typeof(string), "static"); // first -> static
+ Assert.IsFalse (row.IsNull ("first"), "first level null check failed");
+ Assert.AreEqual ("the value", row ["first"], "first level value check failed");
+
+ // add the second level of related
+ DataColumn secondColumn = table.Columns.Add ("second", typeof(string), "first"); // second -> first -> static
+ Assert.IsFalse (row.IsNull ("second"), "second level null check failed");
+ Assert.AreEqual ("the value", row ["second"], "second level value check failed");
+ }
+
+ [Test]
+ public void IsNull_NullValueArguments ()
+ {
+ DataTable table = new DataTable ();
+
+ // add the row, with the value in the column
+ DataColumn staticColumn = table.Columns.Add ("static", typeof(string), null);
+ DataRow row = table.Rows.Add ("the value");
+
+ try {
+ row.IsNull ((string)null);
+ Assert.Fail ("expected an arg null exception for passing a null string");
+ } catch (ArgumentNullException) {
+ // do nothing as null columns aren't allowed
+ }
+
+ try {
+ row.IsNull ("");
+ Assert.Fail ("expected an arg exception for passing an empty string");
+ } catch (ArgumentException) {
+ // do nothing as we can't find a col with no name
+ }
+
+ try {
+ row.IsNull (null, DataRowVersion.Default);
+ Assert.Fail ("null column with version check failed");
+ } catch (ArgumentNullException) {
+ // do nothing as null columns aren't allowed
+ }
+ }
+
[Test] public void Item()
{
// init table with columns
diff --git a/mcs/class/System.Drawing/System.Drawing/Graphics.cs b/mcs/class/System.Drawing/System.Drawing/Graphics.cs
index 827bdee088..6e18fe690d 100644
--- a/mcs/class/System.Drawing/System.Drawing/Graphics.cs
+++ b/mcs/class/System.Drawing/System.Drawing/Graphics.cs
@@ -1744,7 +1744,7 @@ namespace System.Drawing
if (GDIPlus.Display == IntPtr.Zero) {
GDIPlus.Display = GDIPlus.XOpenDisplay (IntPtr.Zero);
if (GDIPlus.Display == IntPtr.Zero)
- throw new NotSupportedException ("Could not open display (X-Server required. Check you DISPLAY environment variable)");
+ throw new NotSupportedException ("Could not open display (X-Server required. Check your DISPLAY environment variable)");
}
if (hwnd == IntPtr.Zero) {
hwnd = GDIPlus.XRootWindow (GDIPlus.Display, GDIPlus.XDefaultScreen (GDIPlus.Display));
diff --git a/mcs/class/System.Drawing/Test/System.Drawing.Drawing2D/TestHatchBrush.cs b/mcs/class/System.Drawing/Test/System.Drawing.Drawing2D/TestHatchBrush.cs
index b07e5b9415..444e1e6066 100644
--- a/mcs/class/System.Drawing/Test/System.Drawing.Drawing2D/TestHatchBrush.cs
+++ b/mcs/class/System.Drawing/Test/System.Drawing.Drawing2D/TestHatchBrush.cs
@@ -28,6 +28,7 @@
using System;
+using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
@@ -125,6 +126,7 @@ namespace MonoTests.System.Drawing.Drawing2D
// save the drawing
string file = "TestHatchBrush" + getOutSufix() + ".png";
bmp.Save (file, ImageFormat.Png);
+ File.Delete (file);
}
private void Constructors ()
diff --git a/mcs/class/System.Drawing/Test/System.Drawing.Imaging/TestImageAttributes.cs b/mcs/class/System.Drawing/Test/System.Drawing.Imaging/TestImageAttributes.cs
index 784e19b0ed..dcca275389 100644
--- a/mcs/class/System.Drawing/Test/System.Drawing.Imaging/TestImageAttributes.cs
+++ b/mcs/class/System.Drawing/Test/System.Drawing.Imaging/TestImageAttributes.cs
@@ -27,6 +27,7 @@
//
using System;
+using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
using System.Security.Permissions;
@@ -114,6 +115,8 @@ namespace MonoTests.System.Drawing.Imaging {
private void Bug80323 (Color c)
{
+ string fileName = String.Format ("80323-{0}.png", c.ToArgb ().ToString ("X"));
+
// test case from bug #80323
ColorMatrix cm = new ColorMatrix (new float[][] {
new float[] {1, 0, 0, 0, 0}, //R
@@ -138,12 +141,14 @@ namespace MonoTests.System.Drawing.Imaging {
g.DrawImage (bmp, new Rectangle (0, 0, 100, 100), 0, 0, 100, 100, GraphicsUnit.Pixel, null);
g.DrawImage (bmp, new Rectangle (100, 0, 100, 100), 0, 0, 100, 100, GraphicsUnit.Pixel, ia);
}
- b.Save (String.Format ("80323-{0}.png", c.ToArgb ().ToString ("X")));
+ b.Save (fileName);
Assert.AreEqual (Color.FromArgb (255, 255, 155, 155), b.GetPixel (50, 50), "50,50");
Assert.AreEqual (Color.FromArgb (255, 255, 205, 205), b.GetPixel (150, 50), "150,50");
}
}
}
+
+ File.Delete (fileName);
}
[Test]
diff --git a/mcs/class/System.IO.Compression/Test/System.IO.Compression/ZipTest.cs b/mcs/class/System.IO.Compression/Test/System.IO.Compression/ZipTest.cs
index ea7f6d3818..8158dfd757 100644
--- a/mcs/class/System.IO.Compression/Test/System.IO.Compression/ZipTest.cs
+++ b/mcs/class/System.IO.Compression/Test/System.IO.Compression/ZipTest.cs
@@ -58,6 +58,8 @@ namespace MonoTests.System.IO.Compression
var nullEntry = archive.GetEntry("nonexisting");
Assert.IsNull(nullEntry);
}
+
+ File.Delete ("test.zip");
}
[Test]
@@ -75,6 +77,8 @@ namespace MonoTests.System.IO.Compression
Assert.Fail();
}
+
+ File.Delete ("test.zip");
}
[Test]
@@ -90,6 +94,8 @@ namespace MonoTests.System.IO.Compression
var nullEntry = archive.GetEntry("nonexisting");
Assert.IsNull(nullEntry);
}
+
+ File.Delete ("test.zip");
}
[Test]
@@ -104,6 +110,8 @@ namespace MonoTests.System.IO.Compression
var foo = entry.Open();
}
+
+ File.Delete ("test.zip");
}
[Test]
@@ -125,6 +133,8 @@ namespace MonoTests.System.IO.Compression
var entry = archive.GetEntry("foo.txt");
Assert.IsNull(entry);
}
+
+ File.Delete ("delete.zip");
}
[Test]
@@ -146,6 +156,8 @@ namespace MonoTests.System.IO.Compression
var entry = archive.GetEntry("foo.txt");
Assert.IsNull(entry);
}
+
+ File.Delete ("delete.zip");
}
[Test]
@@ -157,6 +169,8 @@ namespace MonoTests.System.IO.Compression
var entry = archive.CreateEntry("foo.txt");
using (var stream = entry.Open())
{
+ using (var streamWriter = new StreamWriter(stream))
+ streamWriter.Write("foo");
}
}
@@ -165,7 +179,14 @@ namespace MonoTests.System.IO.Compression
{
var entry = archive.GetEntry("foo.txt");
Assert.IsNotNull(entry);
+
+ var streamReader = new StreamReader(entry.Open());
+ var text = streamReader.ReadToEnd();
+
+ Assert.AreEqual("foo", text);
}
+
+ File.Delete ("create.zip");
}
[Test]
@@ -184,6 +205,8 @@ namespace MonoTests.System.IO.Compression
Assert.AreEqual("foobar/bar.txt", entries[3].FullName);
Assert.AreEqual("foobar/foo.txt", entries[4].FullName);
}
+
+ File.Delete ("test.zip");
}
[Test]
@@ -202,6 +225,8 @@ namespace MonoTests.System.IO.Compression
Assert.AreEqual("foobar/bar.txt", entries[3].FullName);
Assert.AreEqual("foobar/foo.txt", entries[4].FullName);
}
+
+ File.Delete ("test.zip");
}
[Test]
@@ -219,6 +244,8 @@ namespace MonoTests.System.IO.Compression
Assert.Fail();
}
+
+ File.Delete ("test.zip");
}
}
}
diff --git a/mcs/class/System.IO.Compression/ZipArchiveEntry.cs b/mcs/class/System.IO.Compression/ZipArchiveEntry.cs
index acfb8f3f2a..cd783b8eb0 100644
--- a/mcs/class/System.IO.Compression/ZipArchiveEntry.cs
+++ b/mcs/class/System.IO.Compression/ZipArchiveEntry.cs
@@ -112,15 +112,9 @@ namespace System.IO.Compression
if (Archive.Mode == ZipArchiveMode.Create && openStream != null)
throw new IOException("The archive for this entry was opened with the Create mode, and this entry has already been written to.");
- var memoryStream = new MemoryStream();
- openStream = memoryStream;
+ openStream = entry.OpenEntryStream();
- if (Archive.Mode == ZipArchiveMode.Read || Archive.Mode == ZipArchiveMode.Update)
- entry.WriteTo(memoryStream);
-
- memoryStream.Seek(0, SeekOrigin.Begin);
-
- return memoryStream;
+ return openStream;
}
}
}
diff --git a/mcs/class/System.Json/System.Json/JsonPrimitive.cs b/mcs/class/System.Json/System.Json/JsonPrimitive.cs
index 64518785b8..5d47eb4a4e 100644
--- a/mcs/class/System.Json/System.Json/JsonPrimitive.cs
+++ b/mcs/class/System.Json/System.Json/JsonPrimitive.cs
@@ -163,7 +163,16 @@ namespace System.Json
return (string) value;
throw new NotImplementedException ("GetFormattedString from value type " + value.GetType ());
case JsonType.Number:
- return ((IFormattable) value).ToString ("G", NumberFormatInfo.InvariantInfo);
+ string s;
+ if (value is float || value is double)
+ // Use "round-trip" format
+ s = ((IFormattable) value).ToString ("R", NumberFormatInfo.InvariantInfo);
+ else
+ s = ((IFormattable) value).ToString ("G", NumberFormatInfo.InvariantInfo);
+ if (s == "NaN" || s == "Infinity" || s == "-Infinity")
+ return "\"" + s + "\"";
+ else
+ return s;
default:
throw new InvalidOperationException ();
}
diff --git a/mcs/class/System.Json/System.Json/JsonValue.cs b/mcs/class/System.Json/System.Json/JsonValue.cs
index 1d16b88e3f..d703edd551 100644
--- a/mcs/class/System.Json/System.Json/JsonValue.cs
+++ b/mcs/class/System.Json/System.Json/JsonValue.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
+using System.Globalization;
using System.IO;
using System.Linq;
using System.Runtime.Serialization.Json;
@@ -218,8 +219,8 @@ namespace System.Json
if (src [i] == '"' || src [i] == '\\') {
sb.Append (src, start, i - start);
sb.Append ('\\');
- sb.Append (src [i++]);
- start = i;
+ sb.Append (src [i]);
+ start = i + 1;
}
sb.Append (src, start, src.Length - start);
return sb.ToString ();
@@ -328,70 +329,70 @@ namespace System.Json
{
if (value == null)
throw new ArgumentNullException ("value");
- return Convert.ToBoolean (((JsonPrimitive) value).Value);
+ return Convert.ToBoolean (((JsonPrimitive) value).Value, NumberFormatInfo.InvariantInfo);
}
public static implicit operator byte (JsonValue value)
{
if (value == null)
throw new ArgumentNullException ("value");
- return Convert.ToByte (((JsonPrimitive) value).Value);
+ return Convert.ToByte (((JsonPrimitive) value).Value, NumberFormatInfo.InvariantInfo);
}
public static implicit operator char (JsonValue value)
{
if (value == null)
throw new ArgumentNullException ("value");
- return Convert.ToChar (((JsonPrimitive) value).Value);
+ return Convert.ToChar (((JsonPrimitive) value).Value, NumberFormatInfo.InvariantInfo);
}
public static implicit operator decimal (JsonValue value)
{
if (value == null)
throw new ArgumentNullException ("value");
- return Convert.ToDecimal (((JsonPrimitive) value).Value);
+ return Convert.ToDecimal (((JsonPrimitive) value).Value, NumberFormatInfo.InvariantInfo);
}
public static implicit operator double (JsonValue value)
{
if (value == null)
throw new ArgumentNullException ("value");
- return Convert.ToDouble (((JsonPrimitive) value).Value);
+ return Convert.ToDouble (((JsonPrimitive) value).Value, NumberFormatInfo.InvariantInfo);
}
public static implicit operator float (JsonValue value)
{
if (value == null)
throw new ArgumentNullException ("value");
- return Convert.ToSingle (((JsonPrimitive) value).Value);
+ return Convert.ToSingle (((JsonPrimitive) value).Value, NumberFormatInfo.InvariantInfo);
}
public static implicit operator int (JsonValue value)
{
if (value == null)
throw new ArgumentNullException ("value");
- return Convert.ToInt32 (((JsonPrimitive) value).Value);
+ return Convert.ToInt32 (((JsonPrimitive) value).Value, NumberFormatInfo.InvariantInfo);
}
public static implicit operator long (JsonValue value)
{
if (value == null)
throw new ArgumentNullException ("value");
- return Convert.ToInt64 (((JsonPrimitive) value).Value);
+ return Convert.ToInt64 (((JsonPrimitive) value).Value, NumberFormatInfo.InvariantInfo);
}
public static implicit operator sbyte (JsonValue value)
{
if (value == null)
throw new ArgumentNullException ("value");
- return Convert.ToSByte (((JsonPrimitive) value).Value);
+ return Convert.ToSByte (((JsonPrimitive) value).Value, NumberFormatInfo.InvariantInfo);
}
public static implicit operator short (JsonValue value)
{
if (value == null)
throw new ArgumentNullException ("value");
- return Convert.ToInt16 (((JsonPrimitive) value).Value);
+ return Convert.ToInt16 (((JsonPrimitive) value).Value, NumberFormatInfo.InvariantInfo);
}
public static implicit operator string (JsonValue value)
@@ -405,21 +406,21 @@ namespace System.Json
{
if (value == null)
throw new ArgumentNullException ("value");
- return Convert.ToUInt16 (((JsonPrimitive) value).Value);
+ return Convert.ToUInt16 (((JsonPrimitive) value).Value, NumberFormatInfo.InvariantInfo);
}
public static implicit operator ulong (JsonValue value)
{
if (value == null)
throw new ArgumentNullException ("value");
- return Convert.ToUInt64(((JsonPrimitive) value).Value);
+ return Convert.ToUInt64(((JsonPrimitive) value).Value, NumberFormatInfo.InvariantInfo);
}
public static implicit operator ushort (JsonValue value)
{
if (value == null)
throw new ArgumentNullException ("value");
- return Convert.ToUInt16 (((JsonPrimitive) value).Value);
+ return Convert.ToUInt16 (((JsonPrimitive) value).Value, NumberFormatInfo.InvariantInfo);
}
public static implicit operator DateTime (JsonValue value)
diff --git a/mcs/class/System.Json/Test/System.Json/JsonValueTest.cs b/mcs/class/System.Json/Test/System.Json/JsonValueTest.cs
index 2459c1fc3a..02dd106dfd 100644
--- a/mcs/class/System.Json/Test/System.Json/JsonValueTest.cs
+++ b/mcs/class/System.Json/Test/System.Json/JsonValueTest.cs
@@ -11,6 +11,8 @@ using System;
using System.IO;
using System.Text;
using System.Json;
+using System.Globalization;
+using System.Threading;
namespace MonoTests.System
{
@@ -24,6 +26,14 @@ namespace MonoTests.System
Assert.AreEqual (1, j.Count, "itemcount");
Assert.AreEqual (JsonType.String, j ["a"].JsonType, "type");
Assert.AreEqual ("b", (string) j ["a"], "value");
+
+ JsonValue.Parse ("[{ \"a\": \"b\",}]");
+ }
+
+ [Test]
+ public void LoadWithTrailingComma2 ()
+ {
+ JsonValue.Parse ("[{ \"a\": \"b\",}]");
}
// Test that we correctly serialize JsonArray with null elements.
@@ -35,5 +45,141 @@ namespace MonoTests.System
var str = j.ToString ();
Assert.AreEqual (str, "[1, 2, 3, null]");
}
+
+ [Test]
+ public void QuoteEscapeBug_20869 ()
+ {
+ Assert.AreEqual ((new JsonPrimitive ("\"\"")).ToString (), "\"\\\"\\\"\"");
+ }
+
+ void ExpectError (string s)
+ {
+ try {
+ JsonValue.Parse (s);
+ Assert.Fail ("Expected ArgumentException for `" + s + "'");
+ } catch (ArgumentException) {
+ }
+ }
+
+ // Test whether an exception is thrown for invalid JSON
+ [Test]
+ public void CheckErrors ()
+ {
+ ExpectError (@"-");
+ ExpectError (@"- ");
+ ExpectError (@"1.");
+ ExpectError (@"1. ");
+ ExpectError (@"1e+");
+ ExpectError (@"1 2");
+ ExpectError (@"077");
+
+ ExpectError (@"[1,]");
+
+ //ExpectError (@"{""a"":1,}"); // Not valid JSON, allowed anyway
+ }
+
+ // Parse a json string and compare to the expected value
+ void CheckDouble (double expected, string json)
+ {
+ double jvalue = (double) JsonValue.Parse (json);
+ Assert.AreEqual (expected, jvalue);
+ }
+
+ // Convert a number to json and parse the string, then compare the result to the original value
+ void CheckDouble (double number)
+ {
+ double jvalue = (double) JsonValue.Parse (new JsonPrimitive (number).ToString ());
+ Assert.AreEqual (number, jvalue); // should be exactly the same
+ }
+
+ [Test]
+ public void CheckNumbers ()
+ {
+ CheckDouble (0, "0");
+ CheckDouble (0, "-0");
+ CheckDouble (0, "0.00");
+ CheckDouble (0, "-0.00");
+ CheckDouble (1, "1");
+ CheckDouble (1.1, "1.1");
+ CheckDouble (-1, "-1");
+ CheckDouble (-1.1, "-1.1");
+ CheckDouble (1e-10, "1e-10");
+ CheckDouble (1e+10, "1e+10");
+ CheckDouble (1e-30, "1e-30");
+ CheckDouble (1e+30, "1e+30");
+
+ CheckDouble (1, "\"1\"");
+ CheckDouble (1.1, "\"1.1\"");
+ CheckDouble (-1, "\"-1\"");
+ CheckDouble (-1.1, "\"-1.1\"");
+
+ CheckDouble (double.NaN, "\"NaN\"");
+ CheckDouble (double.PositiveInfinity, "\"Infinity\"");
+ CheckDouble (double.NegativeInfinity, "\"-Infinity\"");
+
+ ExpectError ("NaN");
+ ExpectError ("Infinity");
+ ExpectError ("-Infinity");
+
+ Assert.AreEqual ("1.1", new JsonPrimitive (1.1).ToString ());
+ Assert.AreEqual ("-1.1", new JsonPrimitive (-1.1).ToString ());
+ Assert.AreEqual ("1E-20", new JsonPrimitive (1e-20).ToString ());
+ Assert.AreEqual ("1E+20", new JsonPrimitive (1e+20).ToString ());
+ Assert.AreEqual ("1E-30", new JsonPrimitive (1e-30).ToString ());
+ Assert.AreEqual ("1E+30", new JsonPrimitive (1e+30).ToString ());
+ Assert.AreEqual ("\"NaN\"", new JsonPrimitive (double.NaN).ToString ());
+ Assert.AreEqual ("\"Infinity\"", new JsonPrimitive (double.PositiveInfinity).ToString ());
+ Assert.AreEqual ("\"-Infinity\"", new JsonPrimitive (double.NegativeInfinity).ToString ());
+
+ Assert.AreEqual ("1E-30", JsonValue.Parse ("1e-30").ToString ());
+ Assert.AreEqual ("1E+30", JsonValue.Parse ("1e+30").ToString ());
+
+ CheckDouble (1);
+ CheckDouble (1.1);
+ CheckDouble (1.25);
+ CheckDouble (-1);
+ CheckDouble (-1.1);
+ CheckDouble (-1.25);
+ CheckDouble (1e-20);
+ CheckDouble (1e+20);
+ CheckDouble (1e-30);
+ CheckDouble (1e+30);
+ CheckDouble (3.1415926535897932384626433);
+ CheckDouble (3.1415926535897932384626433e-20);
+ CheckDouble (3.1415926535897932384626433e+20);
+ CheckDouble (double.NaN);
+ CheckDouble (double.PositiveInfinity);
+ CheckDouble (double.NegativeInfinity);
+ CheckDouble (double.MinValue);
+ CheckDouble (double.MaxValue);
+
+ // A number which needs 17 digits (see http://stackoverflow.com/questions/6118231/why-do-i-need-17-significant-digits-and-not-16-to-represent-a-double)
+ CheckDouble (18014398509481982.0);
+
+ // Values around the smallest positive decimal value
+ CheckDouble (1.123456789e-29);
+ CheckDouble (1.123456789e-28);
+
+ CheckDouble (1.1E-29, "0.000000000000000000000000000011");
+ // This is being parsed as a decimal and rounded to 1e-28, even though it can be more accurately be represented by a double
+ //CheckDouble (1.1E-28, "0.00000000000000000000000000011");
+ }
+
+ // Retry the test with different locales
+ [Test]
+ public void CheckNumbersCulture ()
+ {
+ CultureInfo old = Thread.CurrentThread.CurrentCulture;
+ try {
+ Thread.CurrentThread.CurrentCulture = new CultureInfo ("en");
+ CheckNumbers ();
+ Thread.CurrentThread.CurrentCulture = new CultureInfo ("fr");
+ CheckNumbers ();
+ Thread.CurrentThread.CurrentCulture = new CultureInfo ("de");
+ CheckNumbers ();
+ } finally {
+ Thread.CurrentThread.CurrentCulture = old;
+ }
+ }
}
}
diff --git a/mcs/class/System.Net.Http/System.Net.Http.Headers/ContentDispositionHeaderValue.cs b/mcs/class/System.Net.Http/System.Net.Http.Headers/ContentDispositionHeaderValue.cs
index 9dd41b3d33..0e28b72838 100644
--- a/mcs/class/System.Net.Http/System.Net.Http.Headers/ContentDispositionHeaderValue.cs
+++ b/mcs/class/System.Net.Http/System.Net.Http.Headers/ContentDispositionHeaderValue.cs
@@ -211,6 +211,10 @@ namespace System.Net.Http.Headers
static string EncodeBase64Value (string value)
{
+ bool quoted = value.Length > 1 && value [0] == '"' && value [value.Length - 1] == '"';
+ if (quoted)
+ value = value.Substring (1, value.Length - 2);
+
for (int i = 0; i < value.Length; ++i) {
var ch = value[i];
if (ch > 127) {
@@ -220,7 +224,7 @@ namespace System.Net.Http.Headers
}
}
- if (!Lexer.IsValidToken (value))
+ if (quoted || !Lexer.IsValidToken (value))
return "\"" + value + "\"";
return value;
diff --git a/mcs/class/System.Net.Http/System.Net.Http/DelegatingHandler.cs b/mcs/class/System.Net.Http/System.Net.Http/DelegatingHandler.cs
index 2458975d68..fe940df896 100644
--- a/mcs/class/System.Net.Http/System.Net.Http/DelegatingHandler.cs
+++ b/mcs/class/System.Net.Http/System.Net.Http/DelegatingHandler.cs
@@ -34,6 +34,7 @@ namespace System.Net.Http
public abstract class DelegatingHandler : HttpMessageHandler
{
bool disposed;
+ HttpMessageHandler handler;
protected DelegatingHandler ()
{
@@ -47,13 +48,24 @@ namespace System.Net.Http
InnerHandler = innerHandler;
}
- public HttpMessageHandler InnerHandler { get; set; }
+ public HttpMessageHandler InnerHandler {
+ get {
+ return handler;
+ }
+ set {
+ if (value == null)
+ throw new ArgumentNullException ("InnerHandler");
+
+ handler = value;
+ }
+ }
protected override void Dispose (bool disposing)
{
if (disposing && !disposed) {
disposed = true;
- InnerHandler.Dispose ();
+ if (InnerHandler != null)
+ InnerHandler.Dispose ();
}
base.Dispose (disposing);
diff --git a/mcs/class/System.Net.Http/System.Net.Http_test.dll.sources b/mcs/class/System.Net.Http/System.Net.Http_test.dll.sources
index e5ce8f7505..29d4d75f5e 100644
--- a/mcs/class/System.Net.Http/System.Net.Http_test.dll.sources
+++ b/mcs/class/System.Net.Http/System.Net.Http_test.dll.sources
@@ -1,3 +1,4 @@
+System.Net.Http/DelegatingHandlerTest.cs
System.Net.Http/ByteArrayContentTest.cs
System.Net.Http/FormUrlEncodedContentTest.cs
System.Net.Http/HttpClientHandlerTest.cs
diff --git a/mcs/class/System.Net.Http/Test/System.Net.Http.Headers/ContentDispositionHeaderValueTest.cs b/mcs/class/System.Net.Http/Test/System.Net.Http.Headers/ContentDispositionHeaderValueTest.cs
index 87bd1a95fe..800ab30251 100644
--- a/mcs/class/System.Net.Http/Test/System.Net.Http.Headers/ContentDispositionHeaderValueTest.cs
+++ b/mcs/class/System.Net.Http/Test/System.Net.Http.Headers/ContentDispositionHeaderValueTest.cs
@@ -215,6 +215,14 @@ namespace MonoTests.System.Net.Http.Headers
value.FileName = "(@)";
Assert.AreEqual ("\"(@)\"", value.FileName, "#21");
Assert.AreEqual (new NameValueHeaderValue ("filename", "\"(@)\""), value.Parameters.First (), "#22");
+
+ value.FileName = "\"č\"";
+ Assert.AreEqual ("č", value.FileName, "#31");
+ Assert.AreEqual (new NameValueHeaderValue ("filename", "\"=?utf-8?B?xI0=?=\""), value.Parameters.First (), "#32");
+
+ value.FileName = "\"quoted\"";
+ Assert.AreEqual ("\"quoted\"", value.FileName, "#41");
+ Assert.AreEqual (new NameValueHeaderValue ("filename", "\"quoted\""), value.Parameters.First (), "#42");
}
[Test]
diff --git a/mcs/class/System.Net.Http/Test/System.Net.Http/DelegatingHandlerTest.cs b/mcs/class/System.Net.Http/Test/System.Net.Http/DelegatingHandlerTest.cs
new file mode 100644
index 0000000000..d6812e7f1d
--- /dev/null
+++ b/mcs/class/System.Net.Http/Test/System.Net.Http/DelegatingHandlerTest.cs
@@ -0,0 +1,63 @@
+//
+// DelegatingHandlerTest.cs
+//
+// Authors:
+// Marek Safar
+//
+// Copyright (C) 2014 Xamarin Inc (http://www.xamarin.com)
+//
+// 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 NUnit.Framework;
+using System.Net.Http;
+using System.IO;
+using System.Threading.Tasks;
+
+namespace MonoTests.System.Net.Http
+{
+ [TestFixture]
+ public class DelegatingHandlerTest
+ {
+ class DefaultHandler : DelegatingHandler
+ {
+ }
+
+
+ [Test]
+ public void DisposeTest ()
+ {
+ var handler = new DefaultHandler ();
+ handler.Dispose ();
+ }
+
+ [Test]
+ public void InnerHandler_Invalid ()
+ {
+ var handler = new DefaultHandler ();
+ try {
+ handler.InnerHandler = null;
+ Assert.Fail ("#1");
+ } catch (ArgumentNullException) {
+ }
+ }
+ }
+}
diff --git a/mcs/class/System.Numerics/System.Numerics/BigInteger.cs b/mcs/class/System.Numerics/System.Numerics/BigInteger.cs
index b067997cb7..329f91eed1 100644
--- a/mcs/class/System.Numerics/System.Numerics/BigInteger.cs
+++ b/mcs/class/System.Numerics/System.Numerics/BigInteger.cs
@@ -315,12 +315,14 @@ namespace System.Numerics {
word = (uint)sub;
borrow = (uint)(sub >> 32) & 0x1u;
- data [data.Length - 1] = ~word & store_mask;
+ if ((~word & store_mask) == 0)
+ data = Resize (data, data.Length - 1);
+ else
+ data [data.Length - 1] = ~word & store_mask;
}
if (borrow != 0) //FIXME I believe this can't happen, can someone write a test for it?
throw new Exception ("non zero final carry");
}
-
}
public bool IsEven {
diff --git a/mcs/class/System.Numerics/Test/System.Numerics/BigIntegerTest.cs b/mcs/class/System.Numerics/Test/System.Numerics/BigIntegerTest.cs
index 4aa0ffbd02..817d13e40c 100644
--- a/mcs/class/System.Numerics/Test/System.Numerics/BigIntegerTest.cs
+++ b/mcs/class/System.Numerics/Test/System.Numerics/BigIntegerTest.cs
@@ -550,13 +550,18 @@ namespace MonoTests.System.Numerics
{
long[] values = new long [] {
0, long.MinValue, long.MaxValue, -1, 1L + int.MaxValue, -1L + int.MinValue, 0x1234, 0xFFFFFFFFL, 0x1FFFFFFFFL, -0xFFFFFFFFL, -0x1FFFFFFFFL,
- 0x100000000L, -0x100000000L, 0x100000001L, -0x100000001L };
+ 0x100000000L, -0x100000000L, 0x100000001L, -0x100000001L, 4294967295L, -4294967295L, 4294967296L, -4294967296L };
foreach (var val in values) {
- var a = new BigInteger (val);
- var b = new BigInteger (a.ToByteArray ());
+ try {
+ var a = new BigInteger (val);
+ var b = new BigInteger (a.ToByteArray ());
- Assert.AreEqual (val, (long)a, "#a_" + val);
- Assert.AreEqual (val, (long)b, "#b_" + val);
+ Assert.AreEqual (val, (long)a, "#a_" + val);
+ Assert.AreEqual (val, (long)b, "#b_" + val);
+ Assert.AreEqual (a, b, "#a == #b (" + val + ")");
+ } catch (Exception e) {
+ Assert.Fail ("could not roundtrip {0}", val);
+ }
}
}
diff --git a/mcs/class/System.Runtime.Caching/Test/System.Runtime.Caching/MemoryCacheTest.cs b/mcs/class/System.Runtime.Caching/Test/System.Runtime.Caching/MemoryCacheTest.cs
index 2c9cafb0f6..39b66d9ca1 100644
--- a/mcs/class/System.Runtime.Caching/Test/System.Runtime.Caching/MemoryCacheTest.cs
+++ b/mcs/class/System.Runtime.Caching/Test/System.Runtime.Caching/MemoryCacheTest.cs
@@ -1254,7 +1254,7 @@ namespace MonoTests.System.Runtime.Caching
// add some short duration entries
for (int i = 0; i < HEAP_RESIZE_SHORT_ENTRIES; i++) {
- var expireAt = DateTimeOffset.Now.AddSeconds (1);
+ var expireAt = DateTimeOffset.Now.AddSeconds (3);
mc.Add ("short-" + i, i.ToString (), expireAt);
}
@@ -1262,20 +1262,20 @@ namespace MonoTests.System.Runtime.Caching
// add some long duration entries
for (int i = 0; i < HEAP_RESIZE_LONG_ENTRIES; i++) {
- var expireAt = DateTimeOffset.Now.AddSeconds (10);
+ var expireAt = DateTimeOffset.Now.AddSeconds (12);
mc.Add ("long-" + i, i.ToString (), expireAt);
}
Assert.AreEqual (HEAP_RESIZE_LONG_ENTRIES + HEAP_RESIZE_SHORT_ENTRIES, mc.GetCount(), "#CS3");
// wait for the cache thread to expire the short duration items, this will also shrink the size of the cache
- global::System.Threading.Thread.Sleep (3 * 1000);
+ global::System.Threading.Thread.Sleep (5 * 1000);
Assert.AreEqual (HEAP_RESIZE_LONG_ENTRIES, mc.GetCount (), "#CS4");
// add some new items into the cache, this will grow the cache again
for (int i = 0; i < HEAP_RESIZE_LONG_ENTRIES; i++) {
- mc.Add("final-" + i, i.ToString (), DateTimeOffset.Now.AddSeconds (2));
+ mc.Add("final-" + i, i.ToString (), DateTimeOffset.Now.AddSeconds (4));
}
Assert.AreEqual (HEAP_RESIZE_LONG_ENTRIES + HEAP_RESIZE_LONG_ENTRIES, mc.GetCount (), "#CS5");
diff --git a/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JavaScriptReader.cs b/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JavaScriptReader.cs
index 891be5db3e..2d11b1727a 100644
--- a/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JavaScriptReader.cs
+++ b/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JavaScriptReader.cs
@@ -26,7 +26,7 @@ namespace System.Runtime.Serialization.Json
{
object v = ReadCore ();
SkipSpaces ();
- if (r.Read () >= 0)
+ if (ReadChar () >= 0)
throw JsonError (String.Format ("extra characters in JSON input"));
return v;
}
@@ -68,8 +68,10 @@ namespace System.Runtime.Serialization.Json
}
while (true) {
SkipSpaces ();
- if (PeekChar () == '}')
+ if (PeekChar () == '}') {
+ ReadChar ();
break;
+ }
string name = ReadStringLiteral ();
SkipSpaces ();
Expect (':');
@@ -160,98 +162,89 @@ namespace System.Runtime.Serialization.Json
// It could return either int, long or decimal, depending on the parsed value.
object ReadNumericLiteral ()
{
+ var sb = new StringBuilder ();
+
bool negative = false;
if (PeekChar () == '-') {
negative = true;
- ReadChar ();
- if (PeekChar () < 0)
- throw JsonError ("Invalid JSON numeric literal; extra negation");
+ sb.Append ((char) ReadChar ());
}
int c;
- decimal val = 0;
int x = 0;
bool zeroStart = PeekChar () == '0';
for (; ; x++) {
c = PeekChar ();
if (c < '0' || '9' < c)
break;
- val = val * 10 + (c - '0');
- ReadChar ();
- if (zeroStart && x == 1 && c == '0')
- throw JsonError ("leading multiple zeros are not allowed");
+ sb.Append ((char) ReadChar ());
+ if (zeroStart && x == 1)
+ throw JsonError ("leading zeros are not allowed");
}
+ if (x == 0) // Reached e.g. for "- "
+ throw JsonError ("Invalid JSON numeric literal; no digit found");
// fraction
-
bool hasFrac = false;
- decimal frac = 0;
int fdigits = 0;
if (PeekChar () == '.') {
hasFrac = true;
- ReadChar ();
+ sb.Append ((char) ReadChar ());
if (PeekChar () < 0)
throw JsonError ("Invalid JSON numeric literal; extra dot");
- decimal d = 10;
while (true) {
c = PeekChar ();
if (c < '0' || '9' < c)
break;
- ReadChar ();
- frac += (c - '0') / d;
- d *= 10;
+ sb.Append ((char) ReadChar ());
fdigits++;
}
if (fdigits == 0)
throw JsonError ("Invalid JSON numeric literal; extra dot");
}
- frac = Decimal.Round (frac, fdigits);
c = PeekChar ();
if (c != 'e' && c != 'E') {
if (!hasFrac) {
- if (negative && int.MinValue <= -val ||
- !negative && val <= int.MaxValue)
- return (int) (negative ? -val : val);
- if (negative && long.MinValue <= -val ||
- !negative && val <= long.MaxValue)
- return (long) (negative ? -val : val);
+ int valueInt;
+ if (int.TryParse (sb.ToString (), NumberStyles.Float, CultureInfo.InvariantCulture, out valueInt))
+ return valueInt;
+
+ long valueLong;
+ if (long.TryParse (sb.ToString (), NumberStyles.Float, CultureInfo.InvariantCulture, out valueLong))
+ return valueLong;
+
+ ulong valueUlong;
+ if (ulong.TryParse (sb.ToString (), NumberStyles.Float, CultureInfo.InvariantCulture, out valueUlong))
+ return valueUlong;
}
- var v = val + frac;
- return negative ? -v : v;
- }
-
- // exponent
-
- ReadChar ();
-
- int exp = 0;
- if (PeekChar () < 0)
- throw new ArgumentException ("Invalid JSON numeric literal; incomplete exponent");
+ decimal valueDecimal;
+ if (decimal.TryParse (sb.ToString (), NumberStyles.Float, CultureInfo.InvariantCulture, out valueDecimal) && valueDecimal != 0)
+ return valueDecimal;
+ } else {
+ // exponent
+ sb.Append ((char) ReadChar ());
+ if (PeekChar () < 0)
+ throw new ArgumentException ("Invalid JSON numeric literal; incomplete exponent");
- bool negexp = false;
- c = PeekChar ();
- if (c == '-') {
- ReadChar ();
- negexp = true;
- }
- else if (c == '+')
- ReadChar ();
-
- if (PeekChar () < 0)
- throw JsonError ("Invalid JSON numeric literal; incomplete exponent");
- while (true) {
c = PeekChar ();
- if (c < '0' || '9' < c)
- break;
- exp = exp * 10 + (c - '0');
- ReadChar ();
+ if (c == '-') {
+ sb.Append ((char) ReadChar ());
+ }
+ else if (c == '+')
+ sb.Append ((char) ReadChar ());
+
+ if (PeekChar () < 0)
+ throw JsonError ("Invalid JSON numeric literal; incomplete exponent");
+ while (true) {
+ c = PeekChar ();
+ if (c < '0' || '9' < c)
+ break;
+ sb.Append ((char) ReadChar ());
+ }
}
- // it is messy to handle exponent, so I just use Decimal.Parse() with assured JSON format.
- if (negexp)
- return new Decimal ((double) (val + frac) / Math.Pow (10, exp));
- int [] bits = Decimal.GetBits (val + frac);
- return new Decimal (bits [0], bits [1], bits [2], negative, (byte) exp);
+
+ return double.Parse (sb.ToString (), NumberStyles.Float, CultureInfo.InvariantCulture);
}
StringBuilder vb = new StringBuilder ();
diff --git a/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Web/WebServiceHostTest.cs b/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Web/WebServiceHostTest.cs
index cf1038dac2..99376fbcd6 100644
--- a/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Web/WebServiceHostTest.cs
+++ b/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Web/WebServiceHostTest.cs
@@ -45,7 +45,7 @@ namespace MonoTests.System.ServiceModel.Web
[Category("NotWorking")]
public void ServiceDebugBehaviorTest () {
- var host = new WebServiceHost (typeof (MyService), new Uri ("http://localhost:8080/"));
+ var host = new WebServiceHost (typeof (MyService), new Uri ("http://localhost:30158/"));
ServiceEndpoint webHttp = host.AddServiceEndpoint ("MonoTests.System.ServiceModel.Web.WebServiceHostTest+MyService", new WebHttpBinding (), "WebHttpBinding");
Assert.AreEqual (true, host.Description.Behaviors.Find ().HttpHelpPageEnabled, "HttpHelpPageEnabled #1");
@@ -63,7 +63,7 @@ namespace MonoTests.System.ServiceModel.Web
[Category ("NotWorking")]
public void WebHttpBehaviorTest1 () {
- var host = new WebServiceHost (typeof (MyService), new Uri ("http://localhost:8080/"));
+ var host = new WebServiceHost (typeof (MyService), new Uri ("http://localhost:30158/"));
ServiceEndpoint webHttp = host.AddServiceEndpoint ("MonoTests.System.ServiceModel.Web.WebServiceHostTest+MyService", new WebHttpBinding (), "WebHttpBinding");
ServiceEndpoint basicHttp = host.AddServiceEndpoint ("MonoTests.System.ServiceModel.Web.WebServiceHostTest+MyService", new BasicHttpBinding (), "BasicHttpBinding");
@@ -83,7 +83,7 @@ namespace MonoTests.System.ServiceModel.Web
[Category("NotWorking")]
public void WebHttpBehaviorTest2 () {
- var host = new WebServiceHost (typeof (MyService), new Uri ("http://localhost:8080/"));
+ var host = new WebServiceHost (typeof (MyService), new Uri ("http://localhost:30158/"));
ServiceEndpoint webHttp = host.AddServiceEndpoint ("MonoTests.System.ServiceModel.Web.WebServiceHostTest+MyService", new WebHttpBinding (), "WebHttpBinding");
MyWebHttpBehavior behavior = new MyWebHttpBehavior ();
behavior.ApplyDispatchBehaviorBegin += delegate {
@@ -103,7 +103,7 @@ namespace MonoTests.System.ServiceModel.Web
[Test]
public void ServiceBaseUriTest () {
- var host = new WebServiceHost (typeof (MyService), new Uri ("http://localhost:8080/"));
+ var host = new WebServiceHost (typeof (MyService), new Uri ("http://localhost:30158/"));
Assert.AreEqual (0, host.Description.Endpoints.Count, "no endpoints yet");
host.Open ();
Assert.AreEqual (1, host.Description.Endpoints.Count, "default endpoint after open");
@@ -136,4 +136,4 @@ namespace MonoTests.System.ServiceModel.Web
}
}
-#endif
\ No newline at end of file
+#endif
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Channels/HttpChannelFactory.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Channels/HttpChannelFactory.cs
index 50ae808fcb..d145ed18e4 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Channels/HttpChannelFactory.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Channels/HttpChannelFactory.cs
@@ -52,11 +52,7 @@ namespace System.ServiceModel.Channels
MessageEncoder = CreateEncoder (mbe);
continue;
}
-#if NET_2_1
- var cbe = be as HttpCookieContainerBindingElement;
- if (cbe != null)
- cookie_manager = cbe.GetProperty (ctx);
-#elif NET_4_0
+#if NET_2_1 || NET_4_0
var tbe = be as HttpTransportBindingElement;
if (tbe != null)
cookie_manager = tbe.GetProperty (ctx);
diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/MetadataExchangeBindingsTest.cs b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/MetadataExchangeBindingsTest.cs
index 8f0be289fd..35cd408af1 100644
--- a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/MetadataExchangeBindingsTest.cs
+++ b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/MetadataExchangeBindingsTest.cs
@@ -69,7 +69,7 @@ namespace MonoTests.System.ServiceModel.Description
Assert.AreEqual (MessageVersion.Soap12WSAddressing10, b.GetProperty (new BindingParameterCollection ()), "#6");
var host = new ServiceHost (typeof (MetadataExchange));
- host.AddServiceEndpoint (typeof (IMetadataExchange), MetadataExchangeBindings.CreateMexHttpBinding (), CreateUri ("http://localhost:8080"));
+ host.AddServiceEndpoint (typeof (IMetadataExchange), MetadataExchangeBindings.CreateMexHttpBinding (), CreateUri ("http://localhost:30158"));
host.Open ();
try {
// it still does not rewrite MessageVersion.None. It's rather likely ServiceMetadataExtension which does overwriting.
@@ -96,7 +96,7 @@ namespace MonoTests.System.ServiceModel.Description
Assert.AreEqual(Uri.UriSchemeHttps, b.Scheme, "#8");
var host = new ServiceHost(typeof(MetadataExchange));
- host.AddServiceEndpoint(typeof(IMetadataExchange), MetadataExchangeBindings.CreateMexHttpsBinding(), CreateUri("https://localhost:8080"));
+ host.AddServiceEndpoint(typeof(IMetadataExchange), MetadataExchangeBindings.CreateMexHttpsBinding(), CreateUri("https://localhost:30158"));
host.Open();
try
{
diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/ServiceMetadataBehaviorTest.cs b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/ServiceMetadataBehaviorTest.cs
index 38bece2f99..a4a22cb18d 100644
--- a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/ServiceMetadataBehaviorTest.cs
+++ b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/ServiceMetadataBehaviorTest.cs
@@ -56,7 +56,7 @@ namespace MonoTests.System.ServiceModel.Description
[Test]
public void InitializeRuntime1 () {
- using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:8080"))) {
+ using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:30158"))) {
host.AddServiceEndpoint (typeof (IMyContract), new BasicHttpBinding (), "e1");
host.Description.Behaviors.Add (new ServiceMetadataBehavior () { HttpGetEnabled = true });
@@ -93,10 +93,10 @@ namespace MonoTests.System.ServiceModel.Description
[Test]
public void InitializeRuntime2 () {
- using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:8080"))) {
+ using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:30158"))) {
host.AddServiceEndpoint (typeof (IMyContract), new BasicHttpBinding (), "");
- host.Description.Behaviors.Add (new ServiceMetadataBehavior () { HttpGetEnabled = true, HttpGetUrl = new Uri ("http://localhost:8080/mex_and_help") });
- host.Description.Behaviors.Find ().HttpHelpPageUrl = new Uri ("http://localhost:8080/mex_and_help");
+ host.Description.Behaviors.Add (new ServiceMetadataBehavior () { HttpGetEnabled = true, HttpGetUrl = new Uri ("http://localhost:30158/mex_and_help") });
+ host.Description.Behaviors.Find ().HttpHelpPageUrl = new Uri ("http://localhost:30158/mex_and_help");
Assert.AreEqual (0, host.ChannelDispatchers.Count, "ChannelDispatchers.Count #1");
@@ -125,10 +125,10 @@ namespace MonoTests.System.ServiceModel.Description
[Test]
public void InitializeRuntime3 () {
- using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:8080"))) {
+ using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:30158"))) {
host.AddServiceEndpoint (typeof (IMyContract), new BasicHttpBinding (), "");
- host.Description.Behaviors.Add (new ServiceMetadataBehavior () { HttpGetEnabled = true, HttpGetUrl = new Uri ("http://localhost:8080/mex") });
- host.Description.Behaviors.Find ().HttpHelpPageUrl = new Uri ("http://localhost:8080/help");
+ host.Description.Behaviors.Add (new ServiceMetadataBehavior () { HttpGetEnabled = true, HttpGetUrl = new Uri ("http://localhost:30158/mex") });
+ host.Description.Behaviors.Find ().HttpHelpPageUrl = new Uri ("http://localhost:30158/help");
Assert.AreEqual (0, host.ChannelDispatchers.Count, "ChannelDispatchers.Count #1");
@@ -176,9 +176,9 @@ namespace MonoTests.System.ServiceModel.Description
[Test]
public void InitializeRuntime4 () {
- using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:8080"))) {
+ using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:30158"))) {
host.AddServiceEndpoint (typeof (IMyContract), new BasicHttpBinding (), "");
- host.Description.Behaviors.Add (new ServiceMetadataBehavior () { HttpGetEnabled = true, HttpGetUrl = new Uri ("http://localhost:8080/mex") });
+ host.Description.Behaviors.Add (new ServiceMetadataBehavior () { HttpGetEnabled = true, HttpGetUrl = new Uri ("http://localhost:30158/mex") });
host.Description.Behaviors.Remove ();
Assert.AreEqual (0, host.ChannelDispatchers.Count, "ChannelDispatchers.Count #1");
@@ -204,7 +204,7 @@ namespace MonoTests.System.ServiceModel.Description
Assert.AreEqual (0, ed.FilterPriority, "FilterPriority");
EndpointAddress ea = ed.EndpointAddress;
- Assert.AreEqual (new Uri ("http://localhost:8080/mex"), ea.Uri, "Uri");
+ Assert.AreEqual (new Uri ("http://localhost:30158/mex"), ea.Uri, "Uri");
DispatchRuntime dr = ed.DispatchRuntime;
Assert.AreEqual (1, dr.Operations.Count, "Operations.Count");
@@ -221,9 +221,9 @@ namespace MonoTests.System.ServiceModel.Description
[Test]
public void ServiceMetadataExtension1 () {
- using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:8080"))) {
+ using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:30158"))) {
host.AddServiceEndpoint (typeof (IMyContract), new BasicHttpBinding (), "");
- host.Description.Behaviors.Add (new ServiceMetadataBehavior () { HttpGetEnabled = true, HttpGetUrl = new Uri ("http://localhost:8080/mex") });
+ host.Description.Behaviors.Add (new ServiceMetadataBehavior () { HttpGetEnabled = true, HttpGetUrl = new Uri ("http://localhost:30158/mex") });
host.Description.Behaviors.Remove ();
host.Open ();
@@ -237,9 +237,9 @@ namespace MonoTests.System.ServiceModel.Description
[Test]
public void ServiceMetadataExtension2 () {
- using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:8080"))) {
+ using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:30158"))) {
host.AddServiceEndpoint (typeof (IMyContract), new BasicHttpBinding (), "");
- host.Description.Behaviors.Add (new ServiceMetadataBehavior () { HttpGetEnabled = true, HttpGetUrl = new Uri ("http://localhost:8080/mex") });
+ host.Description.Behaviors.Add (new ServiceMetadataBehavior () { HttpGetEnabled = true, HttpGetUrl = new Uri ("http://localhost:30158/mex") });
host.Description.Behaviors.Remove ();
ServiceMetadataExtension extension = new ServiceMetadataExtension ();
diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Dispatcher/DispatchRuntimeTest.cs b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Dispatcher/DispatchRuntimeTest.cs
index adff5706c8..3607b4f2a0 100644
--- a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Dispatcher/DispatchRuntimeTest.cs
+++ b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Dispatcher/DispatchRuntimeTest.cs
@@ -53,7 +53,7 @@ namespace MonoTests.System.ServiceModel.Dispatcher
// free to change if MS implementation does not make
// sense.
DispatchRuntime r = new EndpointDispatcher (
- new EndpointAddress ("http://localhost:8080"), "IFoo", "urn:foo").DispatchRuntime;
+ new EndpointAddress ("http://localhost:30158"), "IFoo", "urn:foo").DispatchRuntime;
Assert.AreEqual (AuditLogLocation.Default,
r.SecurityAuditLogLocation, "#1");
@@ -153,7 +153,7 @@ namespace MonoTests.System.ServiceModel.Dispatcher
void TestInstanceBehavior (MessageInspectBehavior b, string expected, Result actual, int invocations)
{
- ServiceHost h = new ServiceHost (typeof (AllActions), new Uri ("http://localhost:8080"));
+ ServiceHost h = new ServiceHost (typeof (AllActions), new Uri ("http://localhost:30158"));
try {
h.AddServiceEndpoint (typeof (IAllActions).FullName, new BasicHttpBinding (), "AllActions");
h.Description.Behaviors.Add (b);
@@ -167,7 +167,7 @@ namespace MonoTests.System.ServiceModel.Dispatcher
Assert.AreEqual (typeof (AllActions), ed.DispatchRuntime.Type, "Type property: " + ed.ContractName);
}
}
- AllActionsProxy p = new AllActionsProxy (new BasicHttpBinding () { SendTimeout = TimeSpan.FromSeconds (5), ReceiveTimeout = TimeSpan.FromSeconds (5) }, new EndpointAddress ("http://localhost:8080/AllActions"));
+ AllActionsProxy p = new AllActionsProxy (new BasicHttpBinding () { SendTimeout = TimeSpan.FromSeconds (5), ReceiveTimeout = TimeSpan.FromSeconds (5) }, new EndpointAddress ("http://localhost:30158/AllActions"));
for (int i = 0; i < invocations; ++i)
p.Get (10);
diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel.PeerResolvers/CustomPeerResolverServiceTest.cs b/mcs/class/System.ServiceModel/Test/System.ServiceModel.PeerResolvers/CustomPeerResolverServiceTest.cs
index a6bc6c5e6f..593ded1b01 100644
--- a/mcs/class/System.ServiceModel/Test/System.ServiceModel.PeerResolvers/CustomPeerResolverServiceTest.cs
+++ b/mcs/class/System.ServiceModel/Test/System.ServiceModel.PeerResolvers/CustomPeerResolverServiceTest.cs
@@ -30,6 +30,7 @@ namespace MonoTests.System.ServiceModel.PeerResolvers
}
[Test]
+ [Category ("NotWorking")]
public void CloseTest ()
{
cprs.Open ();
@@ -79,6 +80,7 @@ namespace MonoTests.System.ServiceModel.PeerResolvers
[Test]
[ExpectedException (typeof (InvalidOperationException))]
+ [Category ("NotWorking")]
public void OpenTest4 ()
{
cprs.Open ();
diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel/ChannelFactory_1Test.cs b/mcs/class/System.ServiceModel/Test/System.ServiceModel/ChannelFactory_1Test.cs
index 427127e946..70efef2761 100644
--- a/mcs/class/System.ServiceModel/Test/System.ServiceModel/ChannelFactory_1Test.cs
+++ b/mcs/class/System.ServiceModel/Test/System.ServiceModel/ChannelFactory_1Test.cs
@@ -483,12 +483,12 @@ namespace MonoTests.System.ServiceModel
var host = new ServiceHost (typeof (OneWayService));
host.AddServiceEndpoint (typeof (IOneWayService),
new BasicHttpBinding (),
- new Uri ("http://localhost:8080"));
+ new Uri ("http://localhost:30158"));
host.Open ();
try {
var cf = new ChannelFactory (
new BasicHttpBinding (),
- new EndpointAddress ("http://localhost:8080"));
+ new EndpointAddress ("http://localhost:30158"));
var ch = cf.CreateChannel ();
ch.GiveMessage ("test");
diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel/ServiceHostBaseTest.cs b/mcs/class/System.ServiceModel/Test/System.ServiceModel/ServiceHostBaseTest.cs
index a5684e24b5..d73d516cbb 100644
--- a/mcs/class/System.ServiceModel/Test/System.ServiceModel/ServiceHostBaseTest.cs
+++ b/mcs/class/System.ServiceModel/Test/System.ServiceModel/ServiceHostBaseTest.cs
@@ -159,7 +159,7 @@ namespace MonoTests.System.ServiceModel
[Test]
public void ChannelDispatchers_NoDebug () {
- ServiceHost h = new ServiceHost (typeof (AllActions), new Uri ("http://localhost:8080"));
+ ServiceHost h = new ServiceHost (typeof (AllActions), new Uri ("http://localhost:30158"));
h.AddServiceEndpoint (typeof (AllActions).FullName, new BasicHttpBinding (), "address");
ServiceDebugBehavior b = h.Description.Behaviors.Find ();
@@ -173,7 +173,7 @@ namespace MonoTests.System.ServiceModel
Assert.IsTrue (channelDispatcher.Endpoints.Count == 1, "#2");
EndpointAddressMessageFilter filter = channelDispatcher.Endpoints [0].AddressFilter as EndpointAddressMessageFilter;
Assert.IsNotNull (filter, "#3");
- Assert.IsTrue (filter.Address.Equals (new EndpointAddress ("http://localhost:8080/address")), "#4");
+ Assert.IsTrue (filter.Address.Equals (new EndpointAddress ("http://localhost:30158/address")), "#4");
Assert.IsFalse (filter.IncludeHostNameInComparison, "#5");
Assert.IsTrue (channelDispatcher.Endpoints [0].ContractFilter is MatchAllMessageFilter, "#6");
} finally {
@@ -183,11 +183,11 @@ namespace MonoTests.System.ServiceModel
[Test]
public void ChannelDispatchers_WithDebug () {
- ServiceHost h = new ServiceHost (typeof (AllActions), new Uri ("http://localhost:8080"));
+ ServiceHost h = new ServiceHost (typeof (AllActions), new Uri ("http://localhost:30158"));
h.AddServiceEndpoint (typeof (AllActions).FullName, new BasicHttpBinding (), "address");
ServiceMetadataBehavior b = new ServiceMetadataBehavior ();
b.HttpGetEnabled = true;
- b.HttpGetUrl = new Uri( "http://localhost:8080" );
+ b.HttpGetUrl = new Uri( "http://localhost:30158" );
h.Description.Behaviors.Add (b);
h.Open ();
@@ -197,7 +197,7 @@ namespace MonoTests.System.ServiceModel
Assert.IsTrue (channelDispatcher.Endpoints.Count == 1, "#3");
EndpointAddressMessageFilter filter = channelDispatcher.Endpoints [0].AddressFilter as EndpointAddressMessageFilter;
Assert.IsNotNull (filter, "#4");
- Assert.IsTrue (filter.Address.Equals (new EndpointAddress ("http://localhost:8080")), "#5");
+ Assert.IsTrue (filter.Address.Equals (new EndpointAddress ("http://localhost:30158")), "#5");
Assert.IsFalse (filter.IncludeHostNameInComparison, "#6");
Assert.IsTrue (channelDispatcher.Endpoints [0].ContractFilter is MatchAllMessageFilter, "#7");
h.Close ();
@@ -207,7 +207,7 @@ namespace MonoTests.System.ServiceModel
public void SpecificActionTest ()
{
//EndpointDispatcher d = new EndpointDispatcher(
- ServiceHost h = new ServiceHost (typeof (SpecificAction), new Uri ("http://localhost:8080"));
+ ServiceHost h = new ServiceHost (typeof (SpecificAction), new Uri ("http://localhost:30158"));
h.AddServiceEndpoint (typeof (Action1Interface), new BasicHttpBinding (), "address");
h.Open ();
@@ -222,7 +222,7 @@ namespace MonoTests.System.ServiceModel
[Test]
public void InitializeRuntimeBehaviors1 () {
HostState st = new HostState ();
- ServiceHost h = new ServiceHost (typeof (SpecificAction2), new Uri ("http://localhost:8080"));
+ ServiceHost h = new ServiceHost (typeof (SpecificAction2), new Uri ("http://localhost:30158"));
h.AddServiceEndpoint (typeof (SpecificAction2), new BasicHttpBinding (), "temp");
h.Description.Behaviors.Add (new MyServiceBehavior (st, h));
@@ -241,7 +241,7 @@ namespace MonoTests.System.ServiceModel
[Test]
public void InitializeRuntimeBehaviors2 () {
HostState st = new HostState ();
- ServiceHost h = new ServiceHost (typeof (SpecificAction), new Uri ("http://localhost:8080"));
+ ServiceHost h = new ServiceHost (typeof (SpecificAction), new Uri ("http://localhost:30158"));
h.AddServiceEndpoint (typeof (Action1Interface), new BasicHttpBinding (), "temp");
h.AddServiceEndpoint (typeof (Action2Interface), new BasicHttpBinding (), "temp2");
@@ -368,7 +368,7 @@ namespace MonoTests.System.ServiceModel
public void AddServiceEndpoint_Directly ()
{
var host = new ServiceHost (typeof (DummyService));
- var address = new EndpointAddress ("http://localhost:8080");
+ var address = new EndpointAddress ("http://localhost:30158");
var binding = new BasicHttpBinding ();
var contract = ContractDescription.GetContract (typeof (IDummyService));
host.AddServiceEndpoint (new ServiceEndpoint (contract, binding, address));
@@ -389,7 +389,7 @@ namespace MonoTests.System.ServiceModel
public void AddServiceEndpoint_Directly_NullBinding ()
{
var host = new ServiceHost (typeof (DummyService));
- var address = new EndpointAddress ("http://localhost:8080");
+ var address = new EndpointAddress ("http://localhost:30158");
var contract = ContractDescription.GetContract (typeof (IDummyService));
host.AddServiceEndpoint (new ServiceEndpoint (contract, null, address));
}
@@ -407,7 +407,7 @@ namespace MonoTests.System.ServiceModel
public void AddServiceEndpoint_Directly_ContractMismatch ()
{
var host = new ServiceHost (typeof (DummyService));
- var address = new EndpointAddress ("http://localhost:8080");
+ var address = new EndpointAddress ("http://localhost:30158");
var binding = new BasicHttpBinding ();
var contract = ContractDescription.GetContract (typeof (INotImplementedService));
host.AddServiceEndpoint (new ServiceEndpoint (contract, binding, address));
diff --git a/mcs/class/System.Web.Extensions/System.Web.Script.Serialization/JavaScriptSerializer.cs b/mcs/class/System.Web.Extensions/System.Web.Script.Serialization/JavaScriptSerializer.cs
index f8f65c52e8..70e6fc9beb 100644
--- a/mcs/class/System.Web.Extensions/System.Web.Script.Serialization/JavaScriptSerializer.cs
+++ b/mcs/class/System.Web.Extensions/System.Web.Script.Serialization/JavaScriptSerializer.cs
@@ -180,16 +180,20 @@ namespace System.Web.Script.Serialization
return c.ConvertFrom (obj);
}
- /*
- * Take care of the special case whereas in JSON an empty string ("") really means
- * an empty value
- * (see: https://bugzilla.novell.com/show_bug.cgi?id=328836)
- */
- if ((targetType.IsGenericType) && (targetType.GetGenericTypeDefinition() == typeof(Nullable<>)))
- {
- string s = obj as String;
- if (String.IsNullOrEmpty(s))
+ if ((targetType.IsGenericType) && (targetType.GetGenericTypeDefinition () == typeof (Nullable<>))) {
+ if (obj is String) {
+ /*
+ * Take care of the special case whereas in JSON an empty string ("") really means
+ * an empty value
+ * (see: https://bugzilla.novell.com/show_bug.cgi?id=328836)
+ */
+ if(String.IsNullOrEmpty ((String)obj))
return null;
+ } else if (c.CanConvertFrom (typeof (string))) {
+ TypeConverter objConverter = TypeDescriptor.GetConverter (obj);
+ string s = objConverter.ConvertToInvariantString (obj);
+ return c.ConvertFromInvariantString (s);
+ }
}
return Convert.ChangeType (obj, targetType);
diff --git a/mcs/class/System.Web.Extensions/Test/System.Web.Script.Serialization/JavaScriptSerializerTest.cs b/mcs/class/System.Web.Extensions/Test/System.Web.Script.Serialization/JavaScriptSerializerTest.cs
index 5883104a95..995590eeb2 100644
--- a/mcs/class/System.Web.Extensions/Test/System.Web.Script.Serialization/JavaScriptSerializerTest.cs
+++ b/mcs/class/System.Web.Extensions/Test/System.Web.Script.Serialization/JavaScriptSerializerTest.cs
@@ -1365,5 +1365,28 @@ namespace MonoTests.System.Web.Script.Serialization
var ret2vad = (IDictionary) ret2va [0];
Assert.AreEqual ("subval", ret2vad ["subkey"], "#2.4");
}
+
+ class ClassWithNullableEnum
+ {
+ public MyEnum? Value { get; set; }
+ }
+
+ [Test]
+ public void DeserializeNullableEnum ()
+ {
+ var jsonValues = new Dictionary {
+ { "{\"Value\":0}", MyEnum.AAA},
+ { "{\"Value\":\"0\"}", MyEnum.AAA},
+ { "{\"Value\":null}", null}
+ };
+
+ var ser = new JavaScriptSerializer ();
+
+ foreach (var kv in jsonValues)
+ {
+ var obj = ser.Deserialize (kv.Key);
+ Assert.AreEqual (kv.Value, obj.Value);
+ }
+ }
}
}
diff --git a/mcs/class/System.Web/System.Web/HttpResponse.cs b/mcs/class/System.Web/System.Web/HttpResponse.cs
index ad18b88a3c..2491c9035d 100644
--- a/mcs/class/System.Web/System.Web/HttpResponse.cs
+++ b/mcs/class/System.Web/System.Web/HttpResponse.cs
@@ -446,7 +446,7 @@ namespace System.Web
}
[MonoTODO ("Not implemented")]
- public void AddCacheDependency (CacheDependency[] dependencies)
+ public void AddCacheDependency (params CacheDependency[] dependencies)
{
throw new NotImplementedException ();
}
diff --git a/mcs/class/System.Web/System.Web/MimeTypes.cs b/mcs/class/System.Web/System.Web/MimeTypes.cs
index 82ce306f60..8b7bfcadf7 100644
--- a/mcs/class/System.Web/System.Web/MimeTypes.cs
+++ b/mcs/class/System.Web/System.Web/MimeTypes.cs
@@ -195,6 +195,7 @@ namespace System.Web
mimeTypes.Add ("htx", "text/html");
mimeTypes.Add ("ice", "x-conference/x-cooltalk");
mimeTypes.Add ("ico", "image/x-icon");
+ mimeTypes.Add ("ics", "text/calendar");
mimeTypes.Add ("idc", "text/plain");
mimeTypes.Add ("ief", "image/ief");
mimeTypes.Add ("iefs", "image/ief");
@@ -271,11 +272,11 @@ namespace System.Web
mimeTypes.Add ("mme", "application/base64");
mimeTypes.Add ("mny", "application/x-msmoney");
mimeTypes.Add ("mod", "audio/mod");
- mimeTypes.Add ("moov", "video/quicktime");
- mimeTypes.Add ("movie", "video/x-sgi-movie");
mimeTypes.Add ("mov", "video/quicktime");
+ mimeTypes.Add ("movie", "video/x-sgi-movie");
+ mimeTypes.Add ("moov", "video/quicktime");
mimeTypes.Add ("mp2", "video/mpeg");
- mimeTypes.Add ("mp3", "audio/mpeg3");
+ mimeTypes.Add ("mp3", "audio/mpeg");
mimeTypes.Add ("mp4", "video/mp4");
//mimeTypes.Add ("mp4a", "audio/mp4"); // A common but unofficial alternative to m4a
mimeTypes.Add ("mpa", "audio/mpeg");
diff --git a/mcs/class/System.Web/Test/System.Web.Caching/OutputCacheTest.cs b/mcs/class/System.Web/Test/System.Web.Caching/OutputCacheTest.cs
index d2bd8ce643..1440358de4 100644
--- a/mcs/class/System.Web/Test/System.Web.Caching/OutputCacheTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.Caching/OutputCacheTest.cs
@@ -135,8 +135,8 @@ namespace MonoTests.System.Web.Caching
static readonly byte[] badSubstitutionResponseElement = { 0x0, 0x1, 0x0, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xFF, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xC, 0x2, 0x0, 0x0, 0x0, 0x4D, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x2E, 0x57, 0x65, 0x62, 0x2C, 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x3D, 0x34, 0x2E, 0x30, 0x2E, 0x30, 0x2E, 0x30, 0x2C, 0x20, 0x43, 0x75, 0x6C, 0x74, 0x75, 0x72, 0x65, 0x3D, 0x6E, 0x65, 0x75, 0x74, 0x72, 0x61, 0x6C, 0x2C, 0x20, 0x50, 0x75, 0x62, 0x6C, 0x69, 0x63, 0x4B, 0x65, 0x79, 0x54, 0x6F, 0x6B, 0x65, 0x6E, 0x3D, 0x62, 0x30, 0x33, 0x66, 0x35, 0x66, 0x37, 0x66, 0x31, 0x31, 0x64, 0x35, 0x30, 0x61, 0x33, 0x61, 0x5, 0x1, 0x0, 0x0, 0x0, 0x2E, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x2E, 0x57, 0x65, 0x62, 0x2E, 0x43, 0x61, 0x63, 0x68, 0x69, 0x6E, 0x67, 0x2E, 0x53, 0x75, 0x62, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x69, 0x6F, 0x6E, 0x52, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x73, 0x65, 0x45, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x2, 0x0, 0x0, 0x0, 0xF, 0x5F, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x4E, 0x61, 0x6D, 0x65, 0xB, 0x5F, 0x6D, 0x65, 0x74, 0x68, 0x6F, 0x64, 0x4E, 0x61, 0x6D, 0x65, 0x1, 0x1, 0x2, 0x0, 0x0, 0x0, 0x6, 0x3, 0x0, 0x0, 0x0, 0x41, 0x4D, 0x6F, 0x6E, 0x6F, 0x54, 0x65, 0x73, 0x74, 0x73, 0x2E, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x2E, 0x57, 0x65, 0x62, 0x2E, 0x43, 0x61, 0x63, 0x68, 0x69, 0x6E, 0x67, 0x2E, 0x4F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x65, 0x73, 0x74, 0x2C, 0x20, 0x44, 0x6F, 0x74, 0x4E, 0x65, 0x74, 0x34, 0x5F, 0x4E, 0x55, 0x6E, 0x69, 0x74, 0x5F, 0x54, 0x65, 0x73, 0x74, 0x73, 0x6, 0x4, 0x0, 0x0, 0x0, 0x1C, 0x44, 0x75, 0x6D, 0x6D, 0x79, 0x42, 0x61, 0x64, 0x53, 0x75, 0x62, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x69, 0x6F, 0x6E, 0x43, 0x61, 0x6C, 0x6C, 0x62, 0x61, 0x63, 0x6B, 0xB, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 };
#else
#if NET_4_5
- static readonly byte[] substitutionResponseElement = {0x0,0x1,0x0,0x0,0x0,0xFF,0xFF,0xFF,0xFF,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xC,0x2,0x0,0x0,0x0,0xA,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5,0x1,0x0,0x0,0x0,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x45,0x6C,0x65,0x6D,0x65,0x6E,0x74,0x3,0x0,0x0,0x0,0x8,0x74,0x79,0x70,0x65,0x4E,0x61,0x6D,0x65,0xA,0x6D,0x65,0x74,0x68,0x6F,0x64,0x4E,0x61,0x6D,0x65,0x19,0x3C,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x3E,0x6B,0x5F,0x5F,0x42,0x61,0x63,0x6B,0x69,0x6E,0x67,0x46,0x69,0x65,0x6C,0x64,0x1,0x1,0x4,0x2B,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x48,0x74,0x74,0x70,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x2,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x6,0x3,0x0,0x0,0x0,0x88,0x1,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x2C,0x20,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5F,0x74,0x65,0x73,0x74,0x5F,0x6E,0x65,0x74,0x5F,0x34,0x5F,0x35,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x31,0x2E,0x33,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x33,0x31,0x62,0x66,0x33,0x38,0x35,0x36,0x61,0x64,0x33,0x36,0x34,0x65,0x33,0x35,0x6,0x4,0x0,0x0,0x0,0x19,0x44,0x75,0x6D,0x6D,0x79,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x9,0x5,0x0,0x0,0x0,0x4,0x5,0x0,0x0,0x0,0x22,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x1,0x0,0x0,0x0,0x8,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x3,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x9,0x6,0x0,0x0,0x0,0x4,0x6,0x0,0x0,0x0,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x7,0x0,0x0,0x0,0x4,0x74,0x79,0x70,0x65,0x8,0x61,0x73,0x73,0x65,0x6D,0x62,0x6C,0x79,0x6,0x74,0x61,0x72,0x67,0x65,0x74,0x12,0x74,0x61,0x72,0x67,0x65,0x74,0x54,0x79,0x70,0x65,0x41,0x73,0x73,0x65,0x6D,0x62,0x6C,0x79,0xE,0x74,0x61,0x72,0x67,0x65,0x74,0x54,0x79,0x70,0x65,0x4E,0x61,0x6D,0x65,0xA,0x6D,0x65,0x74,0x68,0x6F,0x64,0x4E,0x61,0x6D,0x65,0xD,0x64,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x1,0x1,0x2,0x1,0x1,0x1,0x3,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x6,0x7,0x0,0x0,0x0,0x2B,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x48,0x74,0x74,0x70,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x6,0x8,0x0,0x0,0x0,0x4D,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x34,0x2E,0x30,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x62,0x30,0x33,0x66,0x35,0x66,0x37,0x66,0x31,0x31,0x64,0x35,0x30,0x61,0x33,0x61,0xA,0x6,0x9,0x0,0x0,0x0,0x5A,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5F,0x74,0x65,0x73,0x74,0x5F,0x6E,0x65,0x74,0x5F,0x34,0x5F,0x35,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x31,0x2E,0x33,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x33,0x31,0x62,0x66,0x33,0x38,0x35,0x36,0x61,0x64,0x33,0x36,0x34,0x65,0x33,0x35,0x6,0xA,0x0,0x0,0x0,0x2C,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x9,0x4,0x0,0x0,0x0,0xA,0xB,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0};
- static readonly byte[] badSubstitutionResponseElement = {0x0,0x1,0x0,0x0,0x0,0xFF,0xFF,0xFF,0xFF,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xC,0x2,0x0,0x0,0x0,0xA,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5,0x1,0x0,0x0,0x0,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x45,0x6C,0x65,0x6D,0x65,0x6E,0x74,0x3,0x0,0x0,0x0,0x8,0x74,0x79,0x70,0x65,0x4E,0x61,0x6D,0x65,0xA,0x6D,0x65,0x74,0x68,0x6F,0x64,0x4E,0x61,0x6D,0x65,0x19,0x3C,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x3E,0x6B,0x5F,0x5F,0x42,0x61,0x63,0x6B,0x69,0x6E,0x67,0x46,0x69,0x65,0x6C,0x64,0x1,0x1,0x4,0x2B,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x48,0x74,0x74,0x70,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x2,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x6,0x3,0x0,0x0,0x0,0x88,0x1,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x2C,0x20,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5F,0x74,0x65,0x73,0x74,0x5F,0x6E,0x65,0x74,0x5F,0x34,0x5F,0x35,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x31,0x2E,0x33,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x33,0x31,0x62,0x66,0x33,0x38,0x35,0x36,0x61,0x64,0x33,0x36,0x34,0x65,0x33,0x35,0x6,0x4,0x0,0x0,0x0,0x1C,0x44,0x75,0x6D,0x6D,0x79,0x42,0x61,0x64,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x9,0x5,0x0,0x0,0x0,0xC,0x6,0x0,0x0,0x0,0x17,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5F,0x74,0x65,0x73,0x74,0x5F,0x6E,0x65,0x74,0x5F,0x34,0x5F,0x35,0x4,0x5,0x0,0x0,0x0,0x22,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2,0x0,0x0,0x0,0x8,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x7,0x74,0x61,0x72,0x67,0x65,0x74,0x30,0x3,0x4,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x2C,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x6,0x0,0x0,0x0,0x9,0x7,0x0,0x0,0x0,0x9,0x8,0x0,0x0,0x0,0x4,0x7,0x0,0x0,0x0,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x7,0x0,0x0,0x0,0x4,0x74,0x79,0x70,0x65,0x8,0x61,0x73,0x73,0x65,0x6D,0x62,0x6C,0x79,0x6,0x74,0x61,0x72,0x67,0x65,0x74,0x12,0x74,0x61,0x72,0x67,0x65,0x74,0x54,0x79,0x70,0x65,0x41,0x73,0x73,0x65,0x6D,0x62,0x6C,0x79,0xE,0x74,0x61,0x72,0x67,0x65,0x74,0x54,0x79,0x70,0x65,0x4E,0x61,0x6D,0x65,0xA,0x6D,0x65,0x74,0x68,0x6F,0x64,0x4E,0x61,0x6D,0x65,0xD,0x64,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x1,0x1,0x2,0x1,0x1,0x1,0x3,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x6,0x9,0x0,0x0,0x0,0x2B,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x48,0x74,0x74,0x70,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x6,0xA,0x0,0x0,0x0,0x4D,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x34,0x2E,0x30,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x62,0x30,0x33,0x66,0x35,0x66,0x37,0x66,0x31,0x31,0x64,0x35,0x30,0x61,0x33,0x61,0x6,0xB,0x0,0x0,0x0,0x7,0x74,0x61,0x72,0x67,0x65,0x74,0x30,0x6,0xC,0x0,0x0,0x0,0x5A,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5F,0x74,0x65,0x73,0x74,0x5F,0x6E,0x65,0x74,0x5F,0x34,0x5F,0x35,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x31,0x2E,0x33,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x33,0x31,0x62,0x66,0x33,0x38,0x35,0x36,0x61,0x64,0x33,0x36,0x34,0x65,0x33,0x35,0x6,0xD,0x0,0x0,0x0,0x2C,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x9,0x4,0x0,0x0,0x0,0xA,0x5,0x8,0x0,0x0,0x0,0x2C,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xB,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0};
+ static readonly byte[] substitutionResponseElement = {0x0,0x1,0x0,0x0,0x0,0xFF,0xFF,0xFF,0xFF,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xC,0x2,0x0,0x0,0x0,0xA,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5,0x1,0x0,0x0,0x0,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x45,0x6C,0x65,0x6D,0x65,0x6E,0x74,0x3,0x0,0x0,0x0,0x8,0x74,0x79,0x70,0x65,0x4E,0x61,0x6D,0x65,0xA,0x6D,0x65,0x74,0x68,0x6F,0x64,0x4E,0x61,0x6D,0x65,0x19,0x3C,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x3E,0x6B,0x5F,0x5F,0x42,0x61,0x63,0x6B,0x69,0x6E,0x67,0x46,0x69,0x65,0x6C,0x64,0x1,0x1,0x4,0x2B,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x48,0x74,0x74,0x70,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x2,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x6,0x3,0x0,0x0,0x0,0x88,0x1,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x2C,0x20,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5F,0x74,0x65,0x73,0x74,0x5F,0x6E,0x65,0x74,0x5F,0x34,0x5F,0x35,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x31,0x2E,0x33,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x33,0x31,0x62,0x66,0x33,0x38,0x35,0x36,0x61,0x64,0x33,0x36,0x34,0x65,0x33,0x35,0x6,0x4,0x0,0x0,0x0,0x19,0x44,0x75,0x6D,0x6D,0x79,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x9,0x5,0x0,0x0,0x0,0x4,0x5,0x0,0x0,0x0,0x22,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2,0x0,0x0,0x0,0x8,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x7,0x6D,0x65,0x74,0x68,0x6F,0x64,0x30,0x3,0x3,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x1C,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x52,0x65,0x66,0x6C,0x65,0x63,0x74,0x69,0x6F,0x6E,0x2E,0x4D,0x6F,0x6E,0x6F,0x4D,0x65,0x74,0x68,0x6F,0x64,0x9,0x6,0x0,0x0,0x0,0x9,0x7,0x0,0x0,0x0,0x4,0x6,0x0,0x0,0x0,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x7,0x0,0x0,0x0,0x4,0x74,0x79,0x70,0x65,0x8,0x61,0x73,0x73,0x65,0x6D,0x62,0x6C,0x79,0x6,0x74,0x61,0x72,0x67,0x65,0x74,0x12,0x74,0x61,0x72,0x67,0x65,0x74,0x54,0x79,0x70,0x65,0x41,0x73,0x73,0x65,0x6D,0x62,0x6C,0x79,0xE,0x74,0x61,0x72,0x67,0x65,0x74,0x54,0x79,0x70,0x65,0x4E,0x61,0x6D,0x65,0xA,0x6D,0x65,0x74,0x68,0x6F,0x64,0x4E,0x61,0x6D,0x65,0xD,0x64,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x1,0x1,0x2,0x1,0x1,0x1,0x3,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x6,0x8,0x0,0x0,0x0,0x2B,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x48,0x74,0x74,0x70,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x6,0x9,0x0,0x0,0x0,0x4D,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x34,0x2E,0x30,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x62,0x30,0x33,0x66,0x35,0x66,0x37,0x66,0x31,0x31,0x64,0x35,0x30,0x61,0x33,0x61,0xA,0x6,0xA,0x0,0x0,0x0,0x5A,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5F,0x74,0x65,0x73,0x74,0x5F,0x6E,0x65,0x74,0x5F,0x34,0x5F,0x35,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x31,0x2E,0x33,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x33,0x31,0x62,0x66,0x33,0x38,0x35,0x36,0x61,0x64,0x33,0x36,0x34,0x65,0x33,0x35,0x6,0xB,0x0,0x0,0x0,0x2C,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x9,0x4,0x0,0x0,0x0,0xA,0x4,0x7,0x0,0x0,0x0,0x2F,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x52,0x65,0x66,0x6C,0x65,0x63,0x74,0x69,0x6F,0x6E,0x2E,0x4D,0x65,0x6D,0x62,0x65,0x72,0x49,0x6E,0x66,0x6F,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x6,0x0,0x0,0x0,0xC,0x41,0x73,0x73,0x65,0x6D,0x62,0x6C,0x79,0x4E,0x61,0x6D,0x65,0x9,0x43,0x6C,0x61,0x73,0x73,0x4E,0x61,0x6D,0x65,0x4,0x4E,0x61,0x6D,0x65,0x9,0x53,0x69,0x67,0x6E,0x61,0x74,0x75,0x72,0x65,0xA,0x4D,0x65,0x6D,0x62,0x65,0x72,0x54,0x79,0x70,0x65,0x10,0x47,0x65,0x6E,0x65,0x72,0x69,0x63,0x41,0x72,0x67,0x75,0x6D,0x65,0x6E,0x74,0x73,0x1,0x1,0x1,0x1,0x0,0x3,0x8,0xD,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x54,0x79,0x70,0x65,0x5B,0x5D,0x9,0xA,0x0,0x0,0x0,0x9,0xB,0x0,0x0,0x0,0x9,0x4,0x0,0x0,0x0,0x6,0xC,0x0,0x0,0x0,0x3F,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x53,0x74,0x72,0x69,0x6E,0x67,0x20,0x44,0x75,0x6D,0x6D,0x79,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x28,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x48,0x74,0x74,0x70,0x43,0x6F,0x6E,0x74,0x65,0x78,0x74,0x29,0x8,0x0,0x0,0x0,0xA,0xB,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0};
+ static readonly byte[] badSubstitutionResponseElement = {0x0,0x1,0x0,0x0,0x0,0xFF,0xFF,0xFF,0xFF,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xC,0x2,0x0,0x0,0x0,0xA,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5,0x1,0x0,0x0,0x0,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x45,0x6C,0x65,0x6D,0x65,0x6E,0x74,0x3,0x0,0x0,0x0,0x8,0x74,0x79,0x70,0x65,0x4E,0x61,0x6D,0x65,0xA,0x6D,0x65,0x74,0x68,0x6F,0x64,0x4E,0x61,0x6D,0x65,0x19,0x3C,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x3E,0x6B,0x5F,0x5F,0x42,0x61,0x63,0x6B,0x69,0x6E,0x67,0x46,0x69,0x65,0x6C,0x64,0x1,0x1,0x4,0x2B,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x48,0x74,0x74,0x70,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x2,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x6,0x3,0x0,0x0,0x0,0x88,0x1,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x2C,0x20,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5F,0x74,0x65,0x73,0x74,0x5F,0x6E,0x65,0x74,0x5F,0x34,0x5F,0x35,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x31,0x2E,0x33,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x33,0x31,0x62,0x66,0x33,0x38,0x35,0x36,0x61,0x64,0x33,0x36,0x34,0x65,0x33,0x35,0x6,0x4,0x0,0x0,0x0,0x1C,0x44,0x75,0x6D,0x6D,0x79,0x42,0x61,0x64,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x9,0x5,0x0,0x0,0x0,0xC,0x6,0x0,0x0,0x0,0x17,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5F,0x74,0x65,0x73,0x74,0x5F,0x6E,0x65,0x74,0x5F,0x34,0x5F,0x35,0x4,0x5,0x0,0x0,0x0,0x22,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x3,0x0,0x0,0x0,0x8,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x7,0x74,0x61,0x72,0x67,0x65,0x74,0x30,0x7,0x6D,0x65,0x74,0x68,0x6F,0x64,0x30,0x3,0x4,0x3,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x2C,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x6,0x0,0x0,0x0,0x1C,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x52,0x65,0x66,0x6C,0x65,0x63,0x74,0x69,0x6F,0x6E,0x2E,0x4D,0x6F,0x6E,0x6F,0x4D,0x65,0x74,0x68,0x6F,0x64,0x9,0x7,0x0,0x0,0x0,0x9,0x8,0x0,0x0,0x0,0x9,0x9,0x0,0x0,0x0,0x4,0x7,0x0,0x0,0x0,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x7,0x0,0x0,0x0,0x4,0x74,0x79,0x70,0x65,0x8,0x61,0x73,0x73,0x65,0x6D,0x62,0x6C,0x79,0x6,0x74,0x61,0x72,0x67,0x65,0x74,0x12,0x74,0x61,0x72,0x67,0x65,0x74,0x54,0x79,0x70,0x65,0x41,0x73,0x73,0x65,0x6D,0x62,0x6C,0x79,0xE,0x74,0x61,0x72,0x67,0x65,0x74,0x54,0x79,0x70,0x65,0x4E,0x61,0x6D,0x65,0xA,0x6D,0x65,0x74,0x68,0x6F,0x64,0x4E,0x61,0x6D,0x65,0xD,0x64,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x1,0x1,0x2,0x1,0x1,0x1,0x3,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x6,0xA,0x0,0x0,0x0,0x2B,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x48,0x74,0x74,0x70,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x6,0xB,0x0,0x0,0x0,0x4D,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x34,0x2E,0x30,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x62,0x30,0x33,0x66,0x35,0x66,0x37,0x66,0x31,0x31,0x64,0x35,0x30,0x61,0x33,0x61,0x6,0xC,0x0,0x0,0x0,0x7,0x74,0x61,0x72,0x67,0x65,0x74,0x30,0x6,0xD,0x0,0x0,0x0,0x5A,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5F,0x74,0x65,0x73,0x74,0x5F,0x6E,0x65,0x74,0x5F,0x34,0x5F,0x35,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x31,0x2E,0x33,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x33,0x31,0x62,0x66,0x33,0x38,0x35,0x36,0x61,0x64,0x33,0x36,0x34,0x65,0x33,0x35,0x6,0xE,0x0,0x0,0x0,0x2C,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x9,0x4,0x0,0x0,0x0,0xA,0x5,0x8,0x0,0x0,0x0,0x2C,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4,0x9,0x0,0x0,0x0,0x2F,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x52,0x65,0x66,0x6C,0x65,0x63,0x74,0x69,0x6F,0x6E,0x2E,0x4D,0x65,0x6D,0x62,0x65,0x72,0x49,0x6E,0x66,0x6F,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x6,0x0,0x0,0x0,0xC,0x41,0x73,0x73,0x65,0x6D,0x62,0x6C,0x79,0x4E,0x61,0x6D,0x65,0x9,0x43,0x6C,0x61,0x73,0x73,0x4E,0x61,0x6D,0x65,0x4,0x4E,0x61,0x6D,0x65,0x9,0x53,0x69,0x67,0x6E,0x61,0x74,0x75,0x72,0x65,0xA,0x4D,0x65,0x6D,0x62,0x65,0x72,0x54,0x79,0x70,0x65,0x10,0x47,0x65,0x6E,0x65,0x72,0x69,0x63,0x41,0x72,0x67,0x75,0x6D,0x65,0x6E,0x74,0x73,0x1,0x1,0x1,0x1,0x0,0x3,0x8,0xD,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x54,0x79,0x70,0x65,0x5B,0x5D,0x9,0xD,0x0,0x0,0x0,0x9,0xE,0x0,0x0,0x0,0x9,0x4,0x0,0x0,0x0,0x6,0xF,0x0,0x0,0x0,0x42,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x53,0x74,0x72,0x69,0x6E,0x67,0x20,0x44,0x75,0x6D,0x6D,0x79,0x42,0x61,0x64,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x28,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x48,0x74,0x74,0x70,0x43,0x6F,0x6E,0x74,0x65,0x78,0x74,0x29,0x8,0x0,0x0,0x0,0xA,0xB,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0};
#else
static readonly byte[] substitutionResponseElement = {0x0,0x1,0x0,0x0,0x0,0xFF,0xFF,0xFF,0xFF,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xC,0x2,0x0,0x0,0x0,0xA,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5,0x1,0x0,0x0,0x0,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x45,0x6C,0x65,0x6D,0x65,0x6E,0x74,0x3,0x0,0x0,0x0,0x8,0x74,0x79,0x70,0x65,0x4E,0x61,0x6D,0x65,0xA,0x6D,0x65,0x74,0x68,0x6F,0x64,0x4E,0x61,0x6D,0x65,0x19,0x3C,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x3E,0x6B,0x5F,0x5F,0x42,0x61,0x63,0x6B,0x69,0x6E,0x67,0x46,0x69,0x65,0x6C,0x64,0x1,0x1,0x4,0x2B,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x48,0x74,0x74,0x70,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x2,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x6,0x3,0x0,0x0,0x0,0x88,0x1,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x2C,0x20,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5F,0x74,0x65,0x73,0x74,0x5F,0x6E,0x65,0x74,0x5F,0x34,0x5F,0x30,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x31,0x2E,0x33,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x33,0x31,0x62,0x66,0x33,0x38,0x35,0x36,0x61,0x64,0x33,0x36,0x34,0x65,0x33,0x35,0x6,0x4,0x0,0x0,0x0,0x19,0x44,0x75,0x6D,0x6D,0x79,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x9,0x5,0x0,0x0,0x0,0x4,0x5,0x0,0x0,0x0,0x22,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x1,0x0,0x0,0x0,0x8,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x3,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x9,0x6,0x0,0x0,0x0,0x4,0x6,0x0,0x0,0x0,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x7,0x0,0x0,0x0,0x4,0x74,0x79,0x70,0x65,0x8,0x61,0x73,0x73,0x65,0x6D,0x62,0x6C,0x79,0x6,0x74,0x61,0x72,0x67,0x65,0x74,0x12,0x74,0x61,0x72,0x67,0x65,0x74,0x54,0x79,0x70,0x65,0x41,0x73,0x73,0x65,0x6D,0x62,0x6C,0x79,0xE,0x74,0x61,0x72,0x67,0x65,0x74,0x54,0x79,0x70,0x65,0x4E,0x61,0x6D,0x65,0xA,0x6D,0x65,0x74,0x68,0x6F,0x64,0x4E,0x61,0x6D,0x65,0xD,0x64,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x1,0x1,0x2,0x1,0x1,0x1,0x3,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x6,0x7,0x0,0x0,0x0,0x2B,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x48,0x74,0x74,0x70,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x6,0x8,0x0,0x0,0x0,0x4D,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x34,0x2E,0x30,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x62,0x30,0x33,0x66,0x35,0x66,0x37,0x66,0x31,0x31,0x64,0x35,0x30,0x61,0x33,0x61,0xA,0x6,0x9,0x0,0x0,0x0,0x5A,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5F,0x74,0x65,0x73,0x74,0x5F,0x6E,0x65,0x74,0x5F,0x34,0x5F,0x30,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x31,0x2E,0x33,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x33,0x31,0x62,0x66,0x33,0x38,0x35,0x36,0x61,0x64,0x33,0x36,0x34,0x65,0x33,0x35,0x6,0xA,0x0,0x0,0x0,0x2C,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x9,0x4,0x0,0x0,0x0,0xA,0xB,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0};
static readonly byte[] badSubstitutionResponseElement = {0x0,0x1,0x0,0x0,0x0,0xFF,0xFF,0xFF,0xFF,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xC,0x2,0x0,0x0,0x0,0xA,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5,0x1,0x0,0x0,0x0,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x45,0x6C,0x65,0x6D,0x65,0x6E,0x74,0x3,0x0,0x0,0x0,0x8,0x74,0x79,0x70,0x65,0x4E,0x61,0x6D,0x65,0xA,0x6D,0x65,0x74,0x68,0x6F,0x64,0x4E,0x61,0x6D,0x65,0x19,0x3C,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x3E,0x6B,0x5F,0x5F,0x42,0x61,0x63,0x6B,0x69,0x6E,0x67,0x46,0x69,0x65,0x6C,0x64,0x1,0x1,0x4,0x2B,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x48,0x74,0x74,0x70,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x2,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x6,0x3,0x0,0x0,0x0,0x88,0x1,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x2C,0x20,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5F,0x74,0x65,0x73,0x74,0x5F,0x6E,0x65,0x74,0x5F,0x34,0x5F,0x30,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x31,0x2E,0x33,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x33,0x31,0x62,0x66,0x33,0x38,0x35,0x36,0x61,0x64,0x33,0x36,0x34,0x65,0x33,0x35,0x6,0x4,0x0,0x0,0x0,0x1C,0x44,0x75,0x6D,0x6D,0x79,0x42,0x61,0x64,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x9,0x5,0x0,0x0,0x0,0xC,0x6,0x0,0x0,0x0,0x17,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5F,0x74,0x65,0x73,0x74,0x5F,0x6E,0x65,0x74,0x5F,0x34,0x5F,0x30,0x4,0x5,0x0,0x0,0x0,0x22,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2,0x0,0x0,0x0,0x8,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x7,0x74,0x61,0x72,0x67,0x65,0x74,0x30,0x3,0x4,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x2C,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x6,0x0,0x0,0x0,0x9,0x7,0x0,0x0,0x0,0x9,0x8,0x0,0x0,0x0,0x4,0x7,0x0,0x0,0x0,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x7,0x0,0x0,0x0,0x4,0x74,0x79,0x70,0x65,0x8,0x61,0x73,0x73,0x65,0x6D,0x62,0x6C,0x79,0x6,0x74,0x61,0x72,0x67,0x65,0x74,0x12,0x74,0x61,0x72,0x67,0x65,0x74,0x54,0x79,0x70,0x65,0x41,0x73,0x73,0x65,0x6D,0x62,0x6C,0x79,0xE,0x74,0x61,0x72,0x67,0x65,0x74,0x54,0x79,0x70,0x65,0x4E,0x61,0x6D,0x65,0xA,0x6D,0x65,0x74,0x68,0x6F,0x64,0x4E,0x61,0x6D,0x65,0xD,0x64,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x1,0x1,0x2,0x1,0x1,0x1,0x3,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x6,0x9,0x0,0x0,0x0,0x2B,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x48,0x74,0x74,0x70,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x6,0xA,0x0,0x0,0x0,0x4D,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x34,0x2E,0x30,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x62,0x30,0x33,0x66,0x35,0x66,0x37,0x66,0x31,0x31,0x64,0x35,0x30,0x61,0x33,0x61,0x6,0xB,0x0,0x0,0x0,0x7,0x74,0x61,0x72,0x67,0x65,0x74,0x30,0x6,0xC,0x0,0x0,0x0,0x5A,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5F,0x74,0x65,0x73,0x74,0x5F,0x6E,0x65,0x74,0x5F,0x34,0x5F,0x30,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x31,0x2E,0x33,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x33,0x31,0x62,0x66,0x33,0x38,0x35,0x36,0x61,0x64,0x33,0x36,0x34,0x65,0x33,0x35,0x6,0xD,0x0,0x0,0x0,0x2C,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x9,0x4,0x0,0x0,0x0,0xA,0x5,0x8,0x0,0x0,0x0,0x2C,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xB,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0};
@@ -208,7 +208,7 @@ namespace MonoTests.System.Web.Caching
AssertExtensions.AreEqual (bytes, substitutionResponseElement, "#B3");
bytes = SerializeElement (sreBad);
- AssertExtensions.AreEqual (bytes, badSubstitutionResponseElement, "#B3");
+ AssertExtensions.AreEqual (bytes, badSubstitutionResponseElement, "#B4");
}
[Test]
diff --git a/mcs/class/System.Web/Test/System.Web.UI.Adapters/PageAdapterTest.cs b/mcs/class/System.Web/Test/System.Web.UI.Adapters/PageAdapterTest.cs
index db2ea35666..1990089323 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.Adapters/PageAdapterTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.Adapters/PageAdapterTest.cs
@@ -165,7 +165,6 @@ namespace MonoTests.System.Web.UI.Adapters
pd.SaveStateComplete = RenderPostBackEvent_OnSaveStateComplete;
t.Invoker = new PageInvoker (pd);
string html = t.Run ();
- File.WriteAllText("response.html", html);
}
public static void RenderPostBackEvent_OnSaveStateComplete (Page p)
diff --git a/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/MyHost.cs b/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/MyHost.cs
index 0b1254fa5e..03ced5c391 100644
--- a/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/MyHost.cs
+++ b/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/MyHost.cs
@@ -18,11 +18,6 @@ namespace MonoTests.SystemWeb.Framework
{
internal class MyHost : MarshalByRefObject
{
- AutoResetEvent _done;
- AutoResetEvent _doNext;
- WebTest _currentTest;
- Exception _e;
-
#region MyData
class MyData
{
@@ -30,40 +25,12 @@ namespace MonoTests.SystemWeb.Framework
public Exception exception;
}
#endregion
-
- public MyHost ()
- {
- _done = new AutoResetEvent (false);
- _doNext = new AutoResetEvent (false);
- ThreadPool.QueueUserWorkItem (new WaitCallback (param => {
- try {
- AsyncRun (param);
- } catch {}
- }), null);
- }
public AppDomain AppDomain
{ get { return AppDomain.CurrentDomain; } }
public WebTest Run (WebTest t)
{
- _currentTest = t;
- _doNext.Set ();
- _done.WaitOne ();
- if (_e != null) {
- Exception e = _e;
- _e = null;
- throw e;
- }
- return t;
- }
-
- void AsyncRun (object param)
- {
- for (;;) {
- _doNext.WaitOne ();
- try {
- WebTest t = _currentTest;
HttpWorkerRequest wr = t.Request.CreateWorkerRequest ();
MyData data = GetMyData (wr);
data.currentTest = t;
@@ -74,12 +41,8 @@ namespace MonoTests.SystemWeb.Framework
if (data.exception != null)
RethrowException (data.exception);
- } catch (Exception e) {
- _e = e;
- }
-
- _done.Set ();
- }
+
+ return t;
}
private static void RethrowException (Exception inner)
diff --git a/mcs/class/System.XML/Makefile b/mcs/class/System.XML/Makefile
index 2160578776..c52a56468f 100644
--- a/mcs/class/System.XML/Makefile
+++ b/mcs/class/System.XML/Makefile
@@ -65,8 +65,8 @@ EXTRA_DISTFILES = \
$(xmlfiles_files:%=Test/XmlFiles/%) \
$(nist_dom_files:%=Test/System.Xml/nist_dom/%)
-System.Xml.XPath/Parser.cs: System.Xml.XPath/Parser.jay $(topdir)/jay/skeleton.cs
- (cd System.Xml.XPath; $(topdir)/../jay/jay -ct < $(topdir)/../jay/skeleton.cs Parser.jay >> Parser.cs)
+System.Xml.XPath/$(PROFILE)_Parser.cs: System.Xml.XPath/Parser.jay $(topdir)/jay/skeleton.cs
+ (cd System.Xml.XPath; $(topdir)/../jay/jay -ct < $(topdir)/../jay/skeleton.cs Parser.jay >> $(PROFILE)_Parser.cs)
Mono.Xml.Xsl/$(PROFILE)_PatternParser.jay: System.Xml.XPath/Parser.jay $(topdir)/jay/skeleton.cs
sed "s/\%start Expr/\%start Pattern/" $< >$@
@@ -80,12 +80,12 @@ Mono.Xml.Xsl/$(PROFILE)_PatternTokenizer.cs: System.Xml.XPath/Tokenizer.cs
cat $< >>$@
ifneq (moonlight_raw, $(PROFILE))
-BUILT_SOURCES = System.Xml.XPath/Parser.cs \
+BUILT_SOURCES = System.Xml.XPath/$(PROFILE)_Parser.cs \
Mono.Xml.Xsl/$(PROFILE)_PatternParser.cs \
Mono.Xml.Xsl/$(PROFILE)_PatternTokenizer.cs
CLEAN_FILES = Test/XmlFiles/xsl/result.xml \
- System.Xml.XPath/Parser.cs \
+ System.Xml.XPath/$(PROFILE)_Parser.cs \
Mono.Xml.Xsl/$(PROFILE)_PatternParser.cs \
Mono.Xml.Xsl/$(PROFILE)_PatternTokenizer.cs
endif
diff --git a/mcs/class/System.Xaml/Makefile b/mcs/class/System.Xaml/Makefile
index 04ad2dda79..17d1613291 100644
--- a/mcs/class/System.Xaml/Makefile
+++ b/mcs/class/System.Xaml/Makefile
@@ -18,7 +18,7 @@ TEST_EXTRA_DISTFILES = \
Test/XmlFiles/*.xml \
Test/XmlFiles/*.xaml
-VALID_PROFILE := $(filter 4, $(FRAMEWORK_VERSION_MAJOR))
+VALID_PROFILE := $(filter 4 monodroid monotouch, $(FRAMEWORK_VERSION_MAJOR))
ifndef VALID_PROFILE
LIBRARY_NAME = dummy-System.Xaml.dll
NO_INSTALL = yes
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/AmbientAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/AmbientAttribute.cs
index ff55aefc7c..003f0c789e 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/AmbientAttribute.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/AmbientAttribute.cs
@@ -31,9 +31,7 @@ using System.Xaml.Schema;
namespace System.Windows.Markup
{
[AttributeUsage (AttributeTargets.Class | AttributeTargets.Method | AttributeTargets.Property, Inherited = true)]
-#if !NET_2_1
[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
public sealed class AmbientAttribute : Attribute
{
}
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/ArrayExtension.cs b/mcs/class/System.Xaml/System.Windows.Markup/ArrayExtension.cs
index 7a99b79601..e3da18695d 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/ArrayExtension.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/ArrayExtension.cs
@@ -32,9 +32,7 @@ namespace System.Windows.Markup
{
[MarkupExtensionReturnType (typeof (Array))]
[ContentProperty ("Items")]
-#if !NET_2_1
[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyPresentationFramework_3_5)]
-#endif
public class ArrayExtension : MarkupExtension
{
public ArrayExtension ()
@@ -62,9 +60,7 @@ namespace System.Windows.Markup
public Type Type { get; set; }
IList items;
-#if !NET_2_1
[DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
-#endif
public IList Items {
get { return items; }
}
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/ConstructorArgumentAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/ConstructorArgumentAttribute.cs
index 69a8b3f0ba..7708fe7c07 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/ConstructorArgumentAttribute.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/ConstructorArgumentAttribute.cs
@@ -25,9 +25,7 @@ using System;
namespace System.Windows.Markup
{
[AttributeUsage (AttributeTargets.Property, AllowMultiple = false, Inherited = false)]
-#if !NET_2_1
[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
public sealed class ConstructorArgumentAttribute : Attribute
{
public ConstructorArgumentAttribute (string argumentName)
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/ContentPropertyAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/ContentPropertyAttribute.cs
index f772a2bd82..5b3c078b70 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/ContentPropertyAttribute.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/ContentPropertyAttribute.cs
@@ -29,9 +29,7 @@ namespace System.Windows.Markup
// member regardless of this attribute.
[AttributeUsage (AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
-#if !NET_2_1
[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
public sealed class ContentPropertyAttribute : Attribute
{
public ContentPropertyAttribute ()
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/ContentWrapperAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/ContentWrapperAttribute.cs
index 12e10c5e15..d64a2a9645 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/ContentWrapperAttribute.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/ContentWrapperAttribute.cs
@@ -25,9 +25,7 @@ using System;
namespace System.Windows.Markup
{
[AttributeUsage (AttributeTargets.Class, AllowMultiple = true, Inherited = true)]
-#if !NET_2_1
[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
public sealed class ContentWrapperAttribute : Attribute
{
public ContentWrapperAttribute (Type contentWrapper)
@@ -36,7 +34,8 @@ namespace System.Windows.Markup
}
public Type ContentWrapper { get; private set; }
-#if !NET_2_1
+
+#if !__MOBILE__
public override Object TypeId {
get { return this; }
}
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/DateTimeValueSerializer.cs b/mcs/class/System.Xaml/System.Windows.Markup/DateTimeValueSerializer.cs
index 5556e7f43c..720a3517dc 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/DateTimeValueSerializer.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/DateTimeValueSerializer.cs
@@ -28,9 +28,7 @@ using System.Globalization;
namespace System.Windows.Markup
{
-#if !NET_2_1
[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
public class DateTimeValueSerializer : ValueSerializer
{
const DateTimeStyles styles = DateTimeStyles.RoundtripKind | DateTimeStyles.NoCurrentDateDefault | DateTimeStyles.AllowLeadingWhite | DateTimeStyles.AllowTrailingWhite;
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/DependsOnAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/DependsOnAttribute.cs
index f49ce4fb5b..361df14ed6 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/DependsOnAttribute.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/DependsOnAttribute.cs
@@ -25,9 +25,7 @@ using System;
namespace System.Windows.Markup
{
[AttributeUsage (AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = true)]
-#if !NET_2_1
[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
public sealed class DependsOnAttribute : Attribute
{
public DependsOnAttribute (string name)
@@ -37,7 +35,7 @@ namespace System.Windows.Markup
public string Name { get; private set; }
-#if !NET_2_1
+#if !__MOBILE__
// really? I doubt it should be overriden.
public override Object TypeId {
get { return this; }
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/DictionaryKeyPropertyAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/DictionaryKeyPropertyAttribute.cs
index df7f4482bd..1664fe23a8 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/DictionaryKeyPropertyAttribute.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/DictionaryKeyPropertyAttribute.cs
@@ -25,9 +25,7 @@ using System;
namespace System.Windows.Markup
{
[AttributeUsageAttribute(AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
-#if !NET_2_1
[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
public sealed class DictionaryKeyPropertyAttribute : Attribute
{
public DictionaryKeyPropertyAttribute (string name)
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/IComponentConnector.cs b/mcs/class/System.Xaml/System.Windows.Markup/IComponentConnector.cs
index 8b143b9279..5e6081628f 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/IComponentConnector.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/IComponentConnector.cs
@@ -28,9 +28,7 @@ using System.Xaml.Schema;
namespace System.Windows.Markup
{
-#if !NET_2_1
[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
public interface IComponentConnector
{
void Connect (int connectionId, object target);
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/INameScope.cs b/mcs/class/System.Xaml/System.Windows.Markup/INameScope.cs
index 5c142ec0af..3035a7cbc1 100644
--- a/mcs/class/System.Xaml/System.Windows.Markup/INameScope.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/INameScope.cs
@@ -25,9 +25,7 @@ using System.Collections.Generic;
namespace System.Windows.Markup
{
-#if !NET_2_1
[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
public interface INameScope
{
object FindName (string name);
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/IProvideValueTarget.cs b/mcs/class/System.Xaml/System.Windows.Markup/IProvideValueTarget.cs
index 65c124bfc3..6a44ce005d 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/IProvideValueTarget.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/IProvideValueTarget.cs
@@ -28,9 +28,7 @@ using System.Xaml.Schema;
namespace System.Windows.Markup
{
-#if !NET_2_1
[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyPresentationFramework_3_5)]
-#endif
public interface IProvideValueTarget
{
object TargetObject { get; }
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/IUriContext.cs b/mcs/class/System.Xaml/System.Windows.Markup/IUriContext.cs
index 7ace4b70cd..252ab6964c 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/IUriContext.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/IUriContext.cs
@@ -28,9 +28,7 @@ using System.Xaml.Schema;
namespace System.Windows.Markup
{
-#if !NET_2_1
[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyPresentationCore_3_5)]
-#endif
public interface IUriContext
{
Uri BaseUri { get; set; }
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/IValueSerializerContext.cs b/mcs/class/System.Xaml/System.Windows.Markup/IValueSerializerContext.cs
index 011c32e983..bfc1e0a372 100644
--- a/mcs/class/System.Xaml/System.Windows.Markup/IValueSerializerContext.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/IValueSerializerContext.cs
@@ -29,9 +29,7 @@ using System.Xaml;
namespace System.Windows.Markup
{
-#if !NET_2_1
[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
public interface IValueSerializerContext : ITypeDescriptorContext, IServiceProvider
{
ValueSerializer GetValueSerializerFor (PropertyDescriptor descriptor);
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/IXamlTypeResolver.cs b/mcs/class/System.Xaml/System.Windows.Markup/IXamlTypeResolver.cs
index c78be09747..563387c842 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/IXamlTypeResolver.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/IXamlTypeResolver.cs
@@ -28,9 +28,7 @@ using System.Xaml.Schema;
namespace System.Windows.Markup
{
-#if !NET_2_1
[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
public interface IXamlTypeResolver
{
Type Resolve (string qualifiedTypeName);
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/MarkupExtension.cs b/mcs/class/System.Xaml/System.Windows.Markup/MarkupExtension.cs
index 9277a3ca7a..f79cefd6e0 100644
--- a/mcs/class/System.Xaml/System.Windows.Markup/MarkupExtension.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/MarkupExtension.cs
@@ -29,9 +29,7 @@ using System.Xaml.Schema;
namespace System.Windows.Markup
{
-#if !NET_2_1
[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
public abstract class MarkupExtension
{
public abstract object ProvideValue (IServiceProvider serviceProvider);
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/NameScopePropertyAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/NameScopePropertyAttribute.cs
index 3ecd55b200..8e33e017cf 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/NameScopePropertyAttribute.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/NameScopePropertyAttribute.cs
@@ -25,9 +25,7 @@ using System;
namespace System.Windows.Markup
{
[AttributeUsage (AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
-#if !NET_2_1
[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
public sealed class NameScopePropertyAttribute : Attribute
{
public NameScopePropertyAttribute (string name)
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/NullExtension.cs b/mcs/class/System.Xaml/System.Windows.Markup/NullExtension.cs
index 9aef4b4d78..19cd2cbf59 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/NullExtension.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/NullExtension.cs
@@ -29,9 +29,7 @@ using System.Xaml.Schema;
namespace System.Windows.Markup
{
[MarkupExtensionReturnType (typeof (Object))]
-#if !NET_2_1
[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyPresentationFramework_3_5)]
-#endif
public class NullExtension : MarkupExtension
{
public override Object ProvideValue (IServiceProvider serviceProvider)
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/RootNamespaceAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/RootNamespaceAttribute.cs
index 392968b432..040f1945a7 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/RootNamespaceAttribute.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/RootNamespaceAttribute.cs
@@ -25,9 +25,7 @@ using System;
namespace System.Windows.Markup
{
[AttributeUsage (AttributeTargets.Assembly)]
-#if !NET_2_1
[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
public sealed class RootNamespaceAttribute : Attribute
{
public RootNamespaceAttribute (string nameSpace)
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/RuntimeNamePropertyAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/RuntimeNamePropertyAttribute.cs
index ccd2cbc95b..44c3706b50 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/RuntimeNamePropertyAttribute.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/RuntimeNamePropertyAttribute.cs
@@ -25,9 +25,7 @@ using System;
namespace System.Windows.Markup
{
[AttributeUsage (AttributeTargets.Class)]
-#if !NET_2_1
[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
public sealed class RuntimeNamePropertyAttribute : Attribute
{
public RuntimeNamePropertyAttribute (string name)
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/StaticExtension.cs b/mcs/class/System.Xaml/System.Windows.Markup/StaticExtension.cs
index 465ba56521..24df4f5a16 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/StaticExtension.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/StaticExtension.cs
@@ -30,9 +30,7 @@ namespace System.Windows.Markup
{
[MarkupExtensionReturnType (typeof (object))]
[TypeConverter (typeof (StaticExtensionConverter))]
-#if !NET_2_1
[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyPresentationFramework_3_5)]
-#endif
public class StaticExtension : MarkupExtension
{
public StaticExtension ()
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/TrimSurroundingWhitespaceAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/TrimSurroundingWhitespaceAttribute.cs
index bf4309d6e3..371e3e06f8 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/TrimSurroundingWhitespaceAttribute.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/TrimSurroundingWhitespaceAttribute.cs
@@ -31,9 +31,7 @@ using System.Xaml.Schema;
namespace System.Windows.Markup
{
[AttributeUsage (AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
-#if !NET_2_1
[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
public sealed class TrimSurroundingWhitespaceAttribute : Attribute
{
}
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/TypeExtension.cs b/mcs/class/System.Xaml/System.Windows.Markup/TypeExtension.cs
index 00af705581..42da7a1378 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/TypeExtension.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/TypeExtension.cs
@@ -30,9 +30,7 @@ namespace System.Windows.Markup
{
[MarkupExtensionReturnType (typeof (Type))]
[TypeConverter (typeof (TypeExtensionConverter))]
-#if !NET_2_1
[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyPresentationFramework_3_5)]
-#endif
public class TypeExtension : MarkupExtension
{
public TypeExtension ()
@@ -56,9 +54,7 @@ namespace System.Windows.Markup
[ConstructorArgument ("type")]
[DefaultValue (null)]
public Type Type { get; set; }
-#if !NET_2_1
[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-#endif
public string TypeName { get; set; }
public override object ProvideValue (IServiceProvider serviceProvider)
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/UidPropertyAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/UidPropertyAttribute.cs
index bd66ca2614..1898e16a20 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/UidPropertyAttribute.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/UidPropertyAttribute.cs
@@ -31,9 +31,7 @@ using System.Xaml.Schema;
namespace System.Windows.Markup
{
[AttributeUsage (AttributeTargets.Class, AllowMultiple = false)]
-#if !NET_2_1
[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
public sealed class UidPropertyAttribute : Attribute
{
public UidPropertyAttribute (string name)
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/ValueSerializer.cs b/mcs/class/System.Xaml/System.Windows.Markup/ValueSerializer.cs
index bee7ad6590..45adefabec 100644
--- a/mcs/class/System.Xaml/System.Windows.Markup/ValueSerializer.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/ValueSerializer.cs
@@ -32,24 +32,19 @@ using System.Xaml.Schema;
namespace System.Windows.Markup
{
-#if !NET_2_1
[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
public abstract class ValueSerializer
{
-#if !NET_2_1
public static ValueSerializer GetSerializerFor (PropertyDescriptor descriptor)
{
return GetSerializerFor (descriptor, null);
}
-#endif
public static ValueSerializer GetSerializerFor (Type type)
{
return GetSerializerFor (type, null);
}
-#if !NET_2_1
// untested
public static ValueSerializer GetSerializerFor (PropertyDescriptor descriptor, IValueSerializerContext context)
{
@@ -63,7 +58,6 @@ namespace System.Windows.Markup
return new TypeConverterValueSerializer (tc);
return null;
}
-#endif
public static ValueSerializer GetSerializerFor (Type type, IValueSerializerContext context)
{
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/ValueSerializerAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/ValueSerializerAttribute.cs
index fdb4e951e2..37dec5262a 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/ValueSerializerAttribute.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/ValueSerializerAttribute.cs
@@ -31,9 +31,7 @@ using System.Xaml.Schema;
namespace System.Windows.Markup
{
[AttributeUsage (AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Interface, AllowMultiple = false, Inherited = true)]
-#if !NET_2_1
[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
public sealed class ValueSerializerAttribute : Attribute
{
public ValueSerializerAttribute (string valueSerializerTypeName)
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/WhitespaceSignificantCollectionAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/WhitespaceSignificantCollectionAttribute.cs
index 893d79c1aa..36cdf56aa2 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/WhitespaceSignificantCollectionAttribute.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/WhitespaceSignificantCollectionAttribute.cs
@@ -31,9 +31,7 @@ using System.Xaml.Schema;
namespace System.Windows.Markup
{
[AttributeUsage (AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
-#if !NET_2_1
[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
public sealed class WhitespaceSignificantCollectionAttribute : Attribute
{
}
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/XmlLangPropertyAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/XmlLangPropertyAttribute.cs
index 18978a8464..4789120383 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/XmlLangPropertyAttribute.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/XmlLangPropertyAttribute.cs
@@ -31,9 +31,7 @@ using System.Xaml.Schema;
namespace System.Windows.Markup
{
[AttributeUsage (AttributeTargets.Class, AllowMultiple = false)]
-#if !NET_2_1
[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
public sealed class XmlLangPropertyAttribute : Attribute
{
public XmlLangPropertyAttribute (string name)
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/XmlnsCompatibleWithAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/XmlnsCompatibleWithAttribute.cs
index e77ae35972..0e16db2f15 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/XmlnsCompatibleWithAttribute.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/XmlnsCompatibleWithAttribute.cs
@@ -31,9 +31,7 @@ using System.Xaml.Schema;
namespace System.Windows.Markup
{
[AttributeUsage (AttributeTargets.Assembly, AllowMultiple = true)]
-#if !NET_2_1
[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
public sealed class XmlnsCompatibleWithAttribute : Attribute
{
public XmlnsCompatibleWithAttribute (string oldNamespace, string newNamespace)
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/XmlnsDefinitionAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/XmlnsDefinitionAttribute.cs
index 078623fb08..81be2dae73 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/XmlnsDefinitionAttribute.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/XmlnsDefinitionAttribute.cs
@@ -31,9 +31,7 @@ using System.Xaml.Schema;
namespace System.Windows.Markup
{
[AttributeUsage (AttributeTargets.Assembly, AllowMultiple = true)]
-#if !NET_2_1
[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
public sealed class XmlnsDefinitionAttribute : Attribute
{
public XmlnsDefinitionAttribute (string xmlNamespace, string clrNamespace)
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/XmlnsPrefixAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/XmlnsPrefixAttribute.cs
index 4bdf0d97af..c907c8eb42 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/XmlnsPrefixAttribute.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/XmlnsPrefixAttribute.cs
@@ -31,9 +31,7 @@ using System.Xaml.Schema;
namespace System.Windows.Markup
{
[AttributeUsage (AttributeTargets.Assembly, AllowMultiple = true)]
-#if !NET_2_1
[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
public sealed class XmlnsPrefixAttribute : Attribute
{
public XmlnsPrefixAttribute (string xmlNamespace, string prefix)
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlDuplicateMemberException.cs b/mcs/class/System.Xaml/System.Xaml/XamlDuplicateMemberException.cs
index e65e23faf1..10e1858726 100644
--- a/mcs/class/System.Xaml/System.Xaml/XamlDuplicateMemberException.cs
+++ b/mcs/class/System.Xaml/System.Xaml/XamlDuplicateMemberException.cs
@@ -27,9 +27,7 @@ using System.Runtime.Serialization;
namespace System.Xaml
{
-#if !NET_2_1
[Serializable]
-#endif
public class XamlDuplicateMemberException : XamlException
{
public XamlDuplicateMemberException ()
@@ -54,25 +52,21 @@ namespace System.Xaml
{
}
-#if !NET_2_1
protected XamlDuplicateMemberException (SerializationInfo info, StreamingContext context)
: base (info, context)
{
DuplicateMember = (XamlMember) info.GetValue ("member", typeof (XamlMember));
ParentType = (XamlType) info.GetValue ("type", typeof (XamlType));
}
-#endif
public XamlMember DuplicateMember { get; set; }
public XamlType ParentType { get; set; }
-#if !NET_2_1
public override void GetObjectData (SerializationInfo info, StreamingContext context)
{
base.GetObjectData (info, context);
info.AddValue ("member", DuplicateMember);
info.AddValue ("type", ParentType);
}
-#endif
}
}
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlException.cs b/mcs/class/System.Xaml/System.Xaml/XamlException.cs
index ecccbb4ced..669b2245ec 100644
--- a/mcs/class/System.Xaml/System.Xaml/XamlException.cs
+++ b/mcs/class/System.Xaml/System.Xaml/XamlException.cs
@@ -27,9 +27,7 @@ using System.Runtime.Serialization;
namespace System.Xaml
{
-#if !NET_2_1
[Serializable]
-#endif
public class XamlException : Exception
{
public XamlException ()
@@ -63,14 +61,12 @@ namespace System.Xaml
LinePosition = linePosition;
}
-#if !NET_2_1
protected XamlException (SerializationInfo info, StreamingContext context)
: base (info, context)
{
LineNumber = info.GetInt32 ("lineNumber");
LinePosition = info.GetInt32 ("linePosition");
}
-#endif
public int LineNumber { get; protected internal set; }
public int LinePosition { get; protected internal set; }
@@ -78,12 +74,10 @@ namespace System.Xaml
get { return FormatLine (base.Message, LineNumber, LinePosition); }
}
-#if !NET_2_1
public override void GetObjectData (SerializationInfo info, StreamingContext context)
{
info.AddValue ("lineNumber", LineNumber);
info.AddValue ("linePosition", LinePosition);
}
-#endif
}
}
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlInternalException.cs b/mcs/class/System.Xaml/System.Xaml/XamlInternalException.cs
index a24cffe420..d98aa4c4df 100644
--- a/mcs/class/System.Xaml/System.Xaml/XamlInternalException.cs
+++ b/mcs/class/System.Xaml/System.Xaml/XamlInternalException.cs
@@ -27,9 +27,7 @@ using System.Runtime.Serialization;
namespace System.Xaml
{
-#if !NET_2_1
[Serializable]
-#endif
public class XamlInternalException : XamlException
{
public XamlInternalException ()
@@ -47,11 +45,9 @@ namespace System.Xaml
{
}
-#if !NET_2_1
protected XamlInternalException (SerializationInfo info, StreamingContext context)
: base (info, context)
{
}
-#endif
}
}
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlMember.cs b/mcs/class/System.Xaml/System.Xaml/XamlMember.cs
index 7b85eb322d..ad03cbf628 100644
--- a/mcs/class/System.Xaml/System.Xaml/XamlMember.cs
+++ b/mcs/class/System.Xaml/System.Xaml/XamlMember.cs
@@ -166,7 +166,6 @@ namespace System.Xaml
get { return directive_ns ?? (DeclaringType == null ? null : DeclaringType.PreferredXamlNamespace); }
}
-#if !NET_2_1
public DesignerSerializationVisibility SerializationVisibility {
get {
var c= GetCustomAttributeProvider ();
@@ -174,7 +173,6 @@ namespace System.Xaml
return a != null ? a.Visibility : DesignerSerializationVisibility.Visible;
}
}
-#endif
public bool IsAttachable {
get { return is_attachable; }
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlObjectReaderException.cs b/mcs/class/System.Xaml/System.Xaml/XamlObjectReaderException.cs
index 89c64fe1ad..0bad880d68 100644
--- a/mcs/class/System.Xaml/System.Xaml/XamlObjectReaderException.cs
+++ b/mcs/class/System.Xaml/System.Xaml/XamlObjectReaderException.cs
@@ -27,9 +27,7 @@ using System.Runtime.Serialization;
namespace System.Xaml
{
-#if !NET_2_1
[Serializable]
-#endif
public class XamlObjectReaderException : XamlException
{
public XamlObjectReaderException ()
@@ -47,11 +45,9 @@ namespace System.Xaml
{
}
-#if !NET_2_1
protected XamlObjectReaderException (SerializationInfo info, StreamingContext context)
: base (info, context)
{
}
-#endif
}
}
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlObjectWriterException.cs b/mcs/class/System.Xaml/System.Xaml/XamlObjectWriterException.cs
index b5ce0b3b80..17708cc034 100644
--- a/mcs/class/System.Xaml/System.Xaml/XamlObjectWriterException.cs
+++ b/mcs/class/System.Xaml/System.Xaml/XamlObjectWriterException.cs
@@ -27,9 +27,7 @@ using System.Runtime.Serialization;
namespace System.Xaml
{
-#if !NET_2_1
[Serializable]
-#endif
public class XamlObjectWriterException : XamlException
{
public XamlObjectWriterException ()
@@ -47,11 +45,9 @@ namespace System.Xaml
{
}
-#if !NET_2_1
protected XamlObjectWriterException (SerializationInfo info, StreamingContext context)
: base (info, context)
{
}
-#endif
}
}
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlObjectWriterSettings.cs b/mcs/class/System.Xaml/System.Xaml/XamlObjectWriterSettings.cs
index 4ecbe75e6f..a46dded4ed 100644
--- a/mcs/class/System.Xaml/System.Xaml/XamlObjectWriterSettings.cs
+++ b/mcs/class/System.Xaml/System.Xaml/XamlObjectWriterSettings.cs
@@ -25,7 +25,7 @@ using System.Collections.Generic;
using System.ComponentModel;
using System.Reflection;
using System.Windows.Markup;
-#if !NET_2_1
+#if !__MOBILE__
using System.Xaml.Permissions;
#endif
using System.Xaml.Schema;
@@ -42,7 +42,7 @@ namespace System.Xaml
: base (settings)
{
var s = settings;
-#if !NET_2_1
+#if !__MOBILE__
AccessLevel = s.AccessLevel;
#endif
AfterBeginInitHandler = s.AfterBeginInitHandler;
@@ -65,7 +65,7 @@ namespace System.Xaml
public EventHandler BeforePropertiesHandler { get; set; }
public EventHandler XamlSetValueHandler { get; set; }
-#if !NET_2_1
+#if !__MOBILE__
[MonoTODO ("Ignored")]
public XamlAccessLevel AccessLevel { get; set; }
#endif
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlParseException.cs b/mcs/class/System.Xaml/System.Xaml/XamlParseException.cs
index 1ae1667b53..4bb8340a48 100644
--- a/mcs/class/System.Xaml/System.Xaml/XamlParseException.cs
+++ b/mcs/class/System.Xaml/System.Xaml/XamlParseException.cs
@@ -27,9 +27,7 @@ using System.Runtime.Serialization;
namespace System.Xaml
{
-#if !NET_2_1
[Serializable]
-#endif
public class XamlParseException : XamlException
{
public XamlParseException ()
@@ -47,11 +45,9 @@ namespace System.Xaml
{
}
-#if !NET_2_1
protected XamlParseException (SerializationInfo info, StreamingContext context)
: base (info, context)
{
}
-#endif
}
}
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlSchemaContext.cs b/mcs/class/System.Xaml/System.Xaml/XamlSchemaContext.cs
index de31e46de2..64cf91ea71 100644
--- a/mcs/class/System.Xaml/System.Xaml/XamlSchemaContext.cs
+++ b/mcs/class/System.Xaml/System.Xaml/XamlSchemaContext.cs
@@ -57,10 +57,8 @@ namespace System.Xaml
{
if (referenceAssemblies != null)
reference_assemblies = new List (referenceAssemblies);
-#if !NET_2_1
else
AppDomain.CurrentDomain.AssemblyLoad += OnAssemblyLoaded;
-#endif
if (settings == null)
return;
@@ -69,13 +67,11 @@ namespace System.Xaml
SupportMarkupExtensionsWithDuplicateArity = settings.SupportMarkupExtensionsWithDuplicateArity;
}
-#if !NET_2_1
~XamlSchemaContext ()
{
if (reference_assemblies == null)
AppDomain.CurrentDomain.AssemblyLoad -= OnAssemblyLoaded;
}
-#endif
IList reference_assemblies;
@@ -255,7 +251,6 @@ namespace System.Xaml
return compat_nss.TryGetValue (xamlNamespace, out compatibleNamespace);
}
-#if !NET_2_1
void OnAssemblyLoaded (object o, AssemblyLoadEventArgs e)
{
if (reference_assemblies != null)
@@ -270,8 +265,7 @@ namespace System.Xaml
if (all_xaml_types != null)
FillAllXamlTypes (e.LoadedAssembly);
}
-#endif
-
+
// cache updater methods
void FillXamlNamespaces (Assembly ass)
{
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlSchemaException.cs b/mcs/class/System.Xaml/System.Xaml/XamlSchemaException.cs
index 9681927b39..78de4f8e48 100644
--- a/mcs/class/System.Xaml/System.Xaml/XamlSchemaException.cs
+++ b/mcs/class/System.Xaml/System.Xaml/XamlSchemaException.cs
@@ -27,9 +27,7 @@ using System.Runtime.Serialization;
namespace System.Xaml
{
-#if !NET_2_1
[Serializable]
-#endif
public class XamlSchemaException : XamlException
{
public XamlSchemaException ()
@@ -47,11 +45,9 @@ namespace System.Xaml
{
}
-#if !NET_2_1
protected XamlSchemaException (SerializationInfo info, StreamingContext context)
: base (info, context)
{
}
-#endif
}
}
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlServices.cs b/mcs/class/System.Xaml/System.Xaml/XamlServices.cs
index cf686d8506..c8026d195a 100755
--- a/mcs/class/System.Xaml/System.Xaml/XamlServices.cs
+++ b/mcs/class/System.Xaml/System.Xaml/XamlServices.cs
@@ -71,13 +71,11 @@ namespace System.Xaml
return sw.ToString ();
}
-#if !NET_2_1
public static void Save (string fileName, object instance)
{
using (var xw = XmlWriter.Create (fileName, new XmlWriterSettings () { OmitXmlDeclaration = true, Indent = true }))
Save (xw, instance);
}
-#endif
public static void Save (Stream stream, object instance)
{
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlXmlWriterException.cs b/mcs/class/System.Xaml/System.Xaml/XamlXmlWriterException.cs
index d784b9df2d..ffa402cc7d 100644
--- a/mcs/class/System.Xaml/System.Xaml/XamlXmlWriterException.cs
+++ b/mcs/class/System.Xaml/System.Xaml/XamlXmlWriterException.cs
@@ -27,9 +27,7 @@ using System.Runtime.Serialization;
namespace System.Xaml
{
-#if !NET_2_1
[Serializable]
-#endif
public class XamlXmlWriterException : XamlException
{
public XamlXmlWriterException ()
@@ -47,11 +45,9 @@ namespace System.Xaml
{
}
-#if !NET_2_1
protected XamlXmlWriterException (SerializationInfo info, StreamingContext context)
: base (info, context)
{
}
-#endif
}
}
diff --git a/mcs/class/System/System.Net.Mail/SmtpClient.cs b/mcs/class/System/System.Net.Mail/SmtpClient.cs
index 829deeceda..4188a96c32 100644
--- a/mcs/class/System/System.Net.Mail/SmtpClient.cs
+++ b/mcs/class/System/System.Net.Mail/SmtpClient.cs
@@ -550,8 +550,12 @@ namespace System.Net.Mail {
MailAddress from = message.From;
if (from == null)
from = defaultFrom;
-
- SendHeader (HeaderName.Date, DateTime.Now.ToString ("ddd, dd MMM yyyy HH':'mm':'ss zzz", DateTimeFormatInfo.InvariantInfo));
+
+ string dt = DateTime.Now.ToString("ddd, dd MMM yyyy HH':'mm':'ss zzz", DateTimeFormatInfo.InvariantInfo);
+ // remove ':' from time zone offset (e.g. from "+01:00")
+ dt = dt.Remove(dt.Length - 3, 1);
+ SendHeader(HeaderName.Date, dt);
+
SendHeader (HeaderName.From, EncodeAddress(from));
SendHeader (HeaderName.To, EncodeAddresses(message.To));
if (message.CC.Count > 0)
@@ -762,7 +766,7 @@ namespace System.Net.Mail {
static void SendMailAsyncCompletedHandler (TaskCompletionSource