diff -rupdwN /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/base64.d ./src/phobos/std/base64.d
--- /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/base64.d	2009-11-05 01:35:42.000000000 -0500
+++ ./src/phobos/std/base64.d	2009-11-20 18:25:21.000000000 -0500
@@ -139,6 +139,7 @@ body
 
 		default:
 			assert(0);
+			break;
 	}
 	
 	return buf[0 .. (bp - &buf[0])];
diff -rupdwN /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/bigint.d ./src/phobos/std/bigint.d
--- /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/bigint.d	2009-11-05 01:35:42.000000000 -0500
+++ ./src/phobos/std/bigint.d	2009-11-20 18:25:21.000000000 -0500
@@ -693,6 +693,7 @@ Big fromHex(string s)
 
         default:
             parseError();
+	    break;
         }
     }
     if (invalid) parseError();
diff -rupdwN /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/bitmanip.d ./src/phobos/std/bitmanip.d
--- /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/bitmanip.d	2009-11-05 01:35:42.000000000 -0500
+++ ./src/phobos/std/bitmanip.d	2009-11-20 18:25:21.000000000 -0500
@@ -449,7 +449,7 @@ struct BitArray
             {        case 0: assert(b == true); break;
                 case 1: assert(b == false); break;
                 case 2: assert(b == true); break;
-                default: assert(0);
+                default: assert(0); break;
             }
             i++;
         }
@@ -460,7 +460,7 @@ struct BitArray
             {        case 0: assert(b == true); break;
                 case 1: assert(b == false); break;
                 case 2: assert(b == true); break;
-                default: assert(0);
+                default: assert(0); break;
             }
         }
     }
diff -rupdwN /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/c/windows/com.d ./src/phobos/std/c/windows/com.d
--- /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/c/windows/com.d	2009-11-05 01:35:42.000000000 -0500
+++ ./src/phobos/std/c/windows/com.d	2009-11-20 18:25:21.000000000 -0500
@@ -190,6 +190,7 @@ void    CoFreeUnusedLibraries();
 
 interface IUnknown
 {
+extern(System):
     HRESULT QueryInterface(const(IID)* riid, void** pvObject);
     ULONG AddRef();
     ULONG Release();
diff -rupdwN /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/cpuid.d ./src/phobos/std/cpuid.d
--- /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/cpuid.d	2009-11-05 01:35:42.000000000 -0500
+++ ./src/phobos/std/cpuid.d	2009-11-20 18:25:21.000000000 -0500
@@ -169,6 +169,7 @@ version(D_InlineAsm_X86)
 
         default:
             manufac = OTHER;
+	    break;
         }
 
         // threading details
diff -rupdwN /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/date.d ./src/phobos/std/date.d
--- /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/date.d	2009-11-05 01:35:42.000000000 -0500
+++ ./src/phobos/std/date.d	2009-11-20 18:25:21.000000000 -0500
@@ -374,7 +374,7 @@ int dateFromTime(d_time t)
         case 9:         date = day - 272 - leap;        break;
         case 10: date = day - 303 - leap;        break;
         case 11: date = day - 333 - leap;        break;
-        default:
+        default!:
             assert(0);
     }
     return date;
@@ -535,20 +535,11 @@ int daysInMonth(int year, int month)
 {
     switch (month)
     {
-        case 1:
-        case 3:
-        case 5:
-        case 7:
-        case 8:
-        case 10:
-        case 12:
+        case 1, 3, 5, 7, 8, 10, 12:
             return 31;
         case 2:
             return 28 + leapYear(year);
-        case 4:
-        case 6:
-        case 9:
-        case 11:
+        case 4, 6, 9, 11:
             return 30;
     default:
         break;
diff -rupdwN /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/dateparse.d ./src/phobos/std/dateparse.d
--- /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/dateparse.d	2009-11-05 01:35:42.000000000 -0500
+++ ./src/phobos/std/dateparse.d	2009-11-20 18:25:21.000000000 -0500
@@ -179,11 +179,7 @@ private:
                     si++;
                     goto Lret;
 
-                case ' ':
-                case '\n':
-                case '\r':
-                case '\t':
-                case ',':
+                case ' ', '\n', '\r', '\t', ',':
                     si++;
                     break;
 
@@ -431,7 +427,7 @@ private:
             Lret:
                 return result;
 
-            case DP.err:
+            case DP.err!:
             case_error:
                 //message(DTEXT("\terror\n"));
             default:
@@ -479,7 +475,7 @@ private:
                     year = n1;
                     break;
 
-                case DP.minus:
+                case DP.minus!:
                 case DP.slash:  // n1/ ? ? ?
                     dp = parseCalendarDate(n1);
                     if (dp == DP.err)
diff -rupdwN /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/demangle.d ./src/phobos/std/demangle.d
--- /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/demangle.d	2009-11-05 01:35:42.000000000 -0500
+++ ./src/phobos/std/demangle.d	2009-11-20 18:25:21.000000000 -0500
@@ -213,12 +213,11 @@ string demangle(string name)
                 goto L1;
 
             case 'G':                                // static array
-            {        size_t ns = ni;
+                size_t ns = ni;
                 parseNumber();
                 size_t ne = ni;
                 p = parseType() ~ "[" ~ name[ns .. ne] ~ "]";
                 goto L1;
-            }
 
             case 'H':                                // associative array
                 p = parseType();
@@ -245,10 +244,10 @@ string demangle(string name)
                 p = "shared(" ~ parseType() ~ ")";
                 goto L1;
 
-            case 'F':                                // D function
-            case 'U':                                // C function
-            case 'W':                                // Windows function
-            case 'V':                                // Pascal function
+            case 'F'!:                                // D function
+            case 'U'!:                                // C function
+            case 'W'!:                                // Windows function
+            case 'V'!:                                // Pascal function
             case 'R':                                // C++ function
             {        char mc = name[ni - 1];
                 string args;
@@ -304,7 +303,7 @@ string demangle(string name)
                         case 'U': p = "extern (C) ";       break; // C function
                         case 'W': p = "extern (Windows) "; break; // Windows function
                         case 'V': p = "extern (Pascal) ";  break; // Pascal function
-                        default:  assert(0);
+                        default!:  assert(0);
                     }
                     p ~= parseType() ~ " " ~ identifier ~ "(" ~ args ~ ")";
                     return p;
@@ -313,8 +312,8 @@ string demangle(string name)
                     (isdelegate ? " delegate(" : " function(") ~
                     args ~ ")";
                 isdelegate = 0;
-                goto L1;
             }
+                goto L1;
 
             case 'C':        p = "class ";        goto L2;
             case 'S':        p = "struct ";        goto L2;
@@ -416,10 +415,8 @@ string demangle(string name)
                             result ~= 'i';
                             break;
 
-                        case 'a':
-                        case 'w':
-                        case 'd':
-                        {   char m = name[ni - 1];
+                        case 'a', 'w', 'd':
+                            char m = name[ni - 1];
                             if (m == 'a')
                                 m = 'c';
                             size_t n = parseNumber();
@@ -438,7 +435,6 @@ string demangle(string name)
                             result ~= '"';
                             result ~= m;
                             break;
-                        }
 
                         default:
                             error();
@@ -453,7 +449,7 @@ string demangle(string name)
                 case 'Z':
                     break;
 
-                default:
+                default!:
                     error();
             }
             break;
diff -rupdwN /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/format.d ./src/phobos/std/format.d
--- /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/format.d	2009-11-05 01:35:42.000000000 -0500
+++ ./src/phobos/std/format.d	2009-11-20 18:25:21.000000000 -0500
@@ -765,21 +765,21 @@ void doFormat(void delegate(dchar) putc,
 		goto Lnumber;
 
 
-	    case Mangle.Tfloat:
+	    case Mangle.Tfloat!:
 	    case Mangle.Tifloat:
 		if (fc == 'x' || fc == 'X')
 		    goto Luint;
 		vreal = va_arg!(float)(argptr);
 		goto Lreal;
 
-	    case Mangle.Tdouble:
+	    case Mangle.Tdouble!:
 	    case Mangle.Tidouble:
 		if (fc == 'x' || fc == 'X')
 		    goto Lulong;
 		vreal = va_arg!(double)(argptr);
 		goto Lreal;
 
-	    case Mangle.Treal:
+	    case Mangle.Treal!:
 	    case Mangle.Tireal:
 		vreal = va_arg!(real)(argptr);
 		goto Lreal;
@@ -858,7 +858,7 @@ void doFormat(void delegate(dchar) putc,
 			    putstr(s);
 			    break;
 
-			case Mangle.Tconst:
+			case Mangle.Tconst!:
 			case Mangle.Tinvariant:
 			    mi++;
 			    continue;
@@ -869,9 +869,12 @@ void doFormat(void delegate(dchar) putc,
 			      goto Lerror;
 			    void[] va = va_arg!(void[])(argptr);
 			    putArray(va.ptr, va.length, ti2);
+			    break;
 		    }
 		    return;
 		}
+		assert(0);
+		return;
 
 	    case Mangle.Ttypedef:
 		ti = (cast(TypeInfo_Typedef)ti).base;
@@ -886,13 +889,12 @@ void doFormat(void delegate(dchar) putc,
 		return;
 
 	    case Mangle.Tstruct:
-	    {	TypeInfo_Struct tis = cast(TypeInfo_Struct)ti;
+	    	TypeInfo_Struct tis = cast(TypeInfo_Struct)ti;
 		if (tis.xtoString is null)
 		    throw new FormatError("Can't convert " ~ tis.toString() ~ " to string: \"string toString()\" not defined");
 		s = tis.xtoString(argptr);
 		argptr += (tis.tsize() + 3) & ~3;
 		goto Lputstr;
-	    }
 
 	    default:
 		goto Lerror;
@@ -901,7 +903,7 @@ void doFormat(void delegate(dchar) putc,
     Lnumber:
 	switch (fc)
 	{
-	    case 's':
+	    case 's'!:
 	    case 'd':
 		if (signed)
 		{   if (cast(long)vnumber < 0)
@@ -1053,8 +1055,8 @@ void doFormat(void delegate(dchar) putc,
                 tn = skipCI(tn);
                 switch (cast(Mangle)tn.classinfo.name[9])
                 {
-                case Mangle.Tchar:
-                case Mangle.Twchar:
+                case Mangle.Tchar!:
+                case Mangle.Twchar!:
                 case Mangle.Tdchar:
                     ti = tn;
                     mi = 9;
@@ -1091,7 +1093,7 @@ void doFormat(void delegate(dchar) putc,
                 fmt = toUTF8(dfmt);
                 break;
                 
-            case Mangle.Tconst:
+            case Mangle.Tconst!:
             case Mangle.Tinvariant:
                 mi++;
                 goto L1;
@@ -1164,8 +1166,11 @@ void doFormat(void delegate(dchar) putc,
                     case '#':	flags |= FLhash;	continue;
                     case '0':	flags |= FL0pad;	continue;
                         
-                    case '%':	if (flags == 0)
+		    case '%':
+			if (flags == 0)
                             goto Lputc;
+			goto default;
+
                     default:	break;
                     }
                     break;
@@ -1582,7 +1587,6 @@ struct FormatInfo
             switch (fmt[i])
             {
             case '(':
-            {
                 // embedded format specifier
                 auto j = i + 1;
                 void check(bool condition)
@@ -1617,7 +1621,7 @@ struct FormatInfo
                 //result.raw = to!(const(char)[])(fmt[0 .. i]);
                 fmt = fmt[i .. $];
                 return result;
-            }
+
             case '-': result.flDash = true; ++i; break;
             case '+': result.flPlus = true; ++i; break;
             case '#': result.flHash = true; ++i; break;
@@ -1638,8 +1642,7 @@ struct FormatInfo
                     result.width = DYNAMIC;
                 }
                 break;
-            case '1': case '2': case '3': case '4':
-            case '5': case '6': case '7': case '8': case '9':
+	    case '1': .. case '9':
                 auto tmp = fmt[i .. $];
                 const widthOrArgIndex = .parse!(ushort)(tmp);
                 assert(tmp.length,
@@ -2858,10 +2861,10 @@ void skipData(Range)(ref Range input, Fo
     switch (spec.spec)
     {
     case 'c': input.popFront; break;
-    case 'd': assert(false, "Not implemented");
+    case 'd': assert(false, "Not implemented"); break;
     case 'u': while (!input.empty && isdigit(input.front)) input.popFront;
         break;
-    default:
+    default!:
         assert(false, text("Not understood: ", spec.spec));
     }
 }
diff -rupdwN /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/getopt.d ./src/phobos/std/getopt.d
--- /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/getopt.d	2009-11-05 01:35:42.000000000 -0500
+++ ./src/phobos/std/getopt.d	2009-11-20 18:25:21.000000000 -0500
@@ -542,7 +542,7 @@ private void setConfig(ref configuration
     case config.noPassThrough: cfg.passThrough = false; break;
     case config.stopOnFirstNonOption:
         cfg.stopOnFirstNonOption = true; break;
-    default: assert(false);
+    default!: assert(false);
     }
 }
 
diff -rupdwN /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/math.d ./src/phobos/std/math.d
--- /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/math.d	2009-11-05 01:35:42.000000000 -0500
+++ ./src/phobos/std/math.d	2009-11-20 18:25:21.000000000 -0500
@@ -2512,6 +2512,7 @@ pure nothrow F pow(F)(F x, int n) if (is
         case -2:
             return 1 / (x * x);
         default:
+	    break;
         }
 
         m = -n;
@@ -2528,6 +2529,7 @@ pure nothrow F pow(F)(F x, int n) if (is
         case 2:
             return x * x;
         default:
+	    break;
         }
 
         v = x;
diff -rupdwN /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/mmfile.d ./src/phobos/std/mmfile.d
--- /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/mmfile.d	2009-11-05 01:35:42.000000000 -0500
+++ ./src/phobos/std/mmfile.d	2009-11-20 18:25:21.000000000 -0500
@@ -123,7 +123,7 @@ class MmFile
             fmode = 0;
             break;
 
-        default:
+        default!:
             assert(0);
         }
 
@@ -338,7 +338,7 @@ class MmFile
                 fmode = 0;
                 break;
 
-            default:
+            default!:
                 assert(0);
             }
     
diff -rupdwN /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/regex.d ./src/phobos/std/regex.d
--- /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/regex.d	2009-11-05 01:35:42.000000000 -0500
+++ ./src/phobos/std/regex.d	2009-11-20 18:25:21.000000000 -0500
@@ -363,41 +363,41 @@ Returns the number of parenthesized capt
             //printf("\tprog[%d] = %d, %d\n", i, prog[i], REstring);
             switch (prog[i])
             {
-            case REend:
-            case REanychar:
-            case REanystar:
-            case REbackref:
-            case REeol:
-            case REchar:
-            case REichar:
-            case REdchar:
-            case REidchar:
-            case REstring:
-            case REistring:
-            case REtestbit:
-            case REbit:
-            case REnotbit:
-            case RErange:
-            case REnotrange:
-            case REwordboundary:
-            case REnotwordboundary:
-            case REdigit:
-            case REnotdigit:
-            case REspace:
-            case REnotspace:
-            case REword:
-            case REnotword:
+            case REend!:
+            case REanychar!:
+            case REanystar!:
+            case REbackref!:
+            case REeol!:
+            case REchar!:
+            case REichar!:
+            case REdchar!:
+            case REidchar!:
+            case REstring!:
+            case REistring!:
+            case REtestbit!:
+            case REbit!:
+            case REnotbit!:
+            case RErange!:
+            case REnotrange!:
+            case REwordboundary!:
+            case REnotwordboundary!:
+            case REdigit!:
+            case REnotdigit!:
+            case REspace!:
+            case REnotspace!:
+            case REword!:
+            case REnotword!:
                 return;
 
             case REbol:
                 i++;
                 continue;
 
-            case REor:
-            case REnm:
-            case REnmq:
-            case REparen:
-            case REgoto:
+            case REor!:
+            case REnm!:
+            case REnmq!:
+            case REparen!:
+            case REgoto!:
             {
                 auto bitbuf = new OutBuffer;
                 auto r = new Range(bitbuf);
@@ -416,7 +416,7 @@ Returns the number of parenthesized capt
                 }
                 return;
             }
-            default:
+            default!:
                 assert(0);
             }
         }
@@ -579,8 +579,8 @@ Returns the number of parenthesized capt
         c = pattern[p];
         switch (c)
         {
-        case '*':
-        case '+':
+        case '*'!:
+        case '+'!:
         case '?':
             error("*+? not allowed in atom");
             p++;
@@ -647,21 +647,11 @@ Returns the number of parenthesized capt
                 p++;
                 break;
 
-            case 'f':
-            case 'n':
-            case 'r':
-            case 't':
-            case 'v':
-            case 'c':
-            case 'x':
-            case 'u':
-            case '0':
+            case 'f', 'n', 'r', 't', 'v', 'c', 'x', 'u', '0':
                 c = cast(char)escape(pattern, p);
                 goto Lbyte;
 
-            case '1': case '2': case '3':
-            case '4': case '5': case '6':
-            case '7': case '8': case '9':
+            case '1': .. case '9':
                 c -= '1';
                 if (c < re_nsub)
                 {   buf.write(REbackref);
@@ -704,21 +694,21 @@ Returns the number of parenthesized capt
 
                     switch (qc)
                     {
-                    case '{':
-                    case '*':
-                    case '+':
+                    case '{'!:
+                    case '*'!:
+                    case '+'!:
                     case '?':
                         if (q == p)
                             goto Lchar;
                         q--;
                         break;
 
-                    case '(':   case ')':
-                    case '|':
-                    case '[':   case ']':
-                    case '.':   case '^':
-                    case '$':   case '\\':
-                    case '}':
+                    case '('!:   case ')'!:
+                    case '|'!:
+                    case '['!:   case ']'!:
+                    case '.'!:   case '^'!:
+                    case '$'!:   case '\\'!:
+                    case '}'!:
                         break;
 
                     default:
@@ -834,8 +824,7 @@ Returns the number of parenthesized capt
             r.setbit2(0);
         switch (pattern[p])
         {
-        case ']':
-        case '-':
+        case ']', '-':
             c = pattern[p];
             p++;
             r.setbit2(c);
@@ -855,14 +844,14 @@ Returns the number of parenthesized capt
             {
             case ']':
                 switch (rs)
-                {   case RS.dash:
+                {   case RS.dash!:
                         r.setbit2('-');
                 case RS.rliteral:
                     r.setbit2(c);
                     break;
                 case RS.start:
                     break;
-                default:
+                default!:
                     assert(0);
                 }
                 p++;
@@ -913,7 +902,7 @@ Returns the number of parenthesized capt
 
                 Lrs:
                     switch (rs)
-                    {   case RS.dash:
+                    {   case RS.dash!:
                             r.setbit2('-');
                     case RS.rliteral:
                         r.setbit2(c);
@@ -949,7 +938,7 @@ Returns the number of parenthesized capt
                 p++;
             Lrange:
                 switch (rs)
-                {   case RS.rliteral:
+                {   case RS.rliteral!:
                         r.setbit2(c);
                 case RS.start:
                     c = c2;
@@ -968,7 +957,7 @@ Returns the number of parenthesized capt
                     rs = RS.start;
                     break;
 
-                default:
+                default!:
                     assert(0);
                 }
                 continue;
@@ -1031,7 +1020,7 @@ Returns the number of parenthesized capt
                 }
                 return 1;
 
-            case REdchar:
+            case REdchar!:
             case REidchar:
                 return 1;
 
@@ -1059,7 +1048,7 @@ Returns the number of parenthesized capt
                 }
                 return 1;
 
-            case REtestbit:
+            case REtestbit!:
             case REbit:
                 maxc = (cast(ushort *)&prog[i + 1])[0];
                 maxb = (cast(ushort *)&prog[i + 1])[1];
@@ -1082,7 +1071,7 @@ Returns the number of parenthesized capt
                     r.base[b] |= ~prog[i + 1 + 4 + b];
                 return 1;
 
-            case REbol:
+            case REbol!:
             case REeol:
                 return 0;
 
@@ -1101,7 +1090,7 @@ Returns the number of parenthesized capt
             case REanystar:
                 return 0;
 
-            case REnm:
+            case REnm!:
             case REnmq:
                 // len, n, m, ()
                 len = (cast(uint *)&prog[i + 1])[0];
@@ -1125,7 +1114,7 @@ Returns the number of parenthesized capt
             case REend:
                 return 0;
 
-            case REwordboundary:
+            case REwordboundary!:
             case REnotwordboundary:
                 return 0;
 
@@ -1174,7 +1163,7 @@ Returns the number of parenthesized capt
             case REbackref:
                 return 0;
 
-            default:
+            default!:
                 assert(0);
             }
         }
@@ -1218,14 +1207,7 @@ Returns the number of parenthesized capt
             c &= 0x1F;
             break;
 
-        case '0':
-        case '1':
-        case '2':
-        case '3':
-        case '4':
-        case '5':
-        case '6':
-        case '7':
+        case '0': .. case '7':
             c -= '0';
             for (i = 0; i < 2; i++)
             {
@@ -1435,7 +1417,7 @@ Returns the number of parenthesized capt
                     pc++;
                     break;
 
-                case REnm:
+                case REnm!:
                 case REnmq:
                     // len, n, m, ()
                     puint = cast(uint *)&prog[pc + 1];
@@ -1507,7 +1489,7 @@ Returns the number of parenthesized capt
                     pc += 2;
                     break;
 
-                default:
+                default!:
                     assert(0);
                 }
             }
@@ -2291,7 +2273,7 @@ Returns $(D hit) (converted to $(D strin
                 }
                 break;
 
-            case engine.REnm:
+            case engine.REnm!:
             case engine.REnmq:
                 // len, n, m, ()
                 puint = cast(uint *)&engine.program[pc + 1];
@@ -2491,7 +2473,7 @@ Returns $(D hit) (converted to $(D strin
                 pc++;
                 break;
 
-            case engine.REbackref:
+            case engine.REbackref!:
             {
                 n = engine.program[pc + 1];
                 debug(regex) printf("\tREbackref %d\n", n);
@@ -2513,7 +2495,7 @@ Returns $(D hit) (converted to $(D strin
                 break;
             }
 
-            default:
+            default!:
                 assert(0);
             }
         }
@@ -2583,8 +2565,7 @@ and, using the format string, generate a
                 endIdx = input.length;
                 goto Lstring;
 
-            case '0': case '1': case '2': case '3': case '4':
-            case '5': case '6': case '7': case '8': case '9':
+            case '0': .. case '9':
                 i = c - '0';
                 if (f + 1 == format.length)
                 {
diff -rupdwN /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/regexp.d ./src/phobos/std/regexp.d
--- /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/regexp.d	2009-11-05 01:35:42.000000000 -0500
+++ ./src/phobos/std/regexp.d	2009-11-20 18:25:21.000000000 -0500
@@ -1512,7 +1512,7 @@ public int test(string s)
                     pc++;
                     break;
 
-                case REnm:
+                case REnm!:
                 case REnmq:
                     // len, n, m, ()
                     puint = cast(uint *)&prog[pc + 1];
@@ -1583,7 +1583,7 @@ public int test(string s)
                     pc += 2;
                     break;
 
-                default:
+                default!:
                     assert(0);
                 }
             }
@@ -1892,7 +1892,7 @@ public int test(string s)
                 }
                 break;
 
-            case REnm:
+            case REnm!:
             case REnmq:
                 // len, n, m, ()
                 puint = cast(uint *)&program[pc + 1];
@@ -2091,7 +2091,6 @@ public int test(string s)
                 break;
 
             case REbackref:
-            {
                 n = program[pc + 1];
                 debug(regexp) printf("\tREbackref %d\n", n);
 
@@ -2110,9 +2109,8 @@ public int test(string s)
                 src += len;
                 pc += 2;
                 break;
-            }
 
-            default:
+            default!:
                 assert(0);
             }
         }
@@ -2286,8 +2284,8 @@ public int test(string s)
             c = pattern[p];
             switch (c)
             {
-            case '*':
-            case '+':
+            case '*'!:
+            case '+'!:
             case '?':
                 error("*+? not allowed in atom");
                 p++;
@@ -2354,21 +2352,11 @@ public int test(string s)
                     p++;
                     break;
 
-                case 'f':
-                case 'n':
-                case 'r':
-                case 't':
-                case 'v':
-                case 'c':
-                case 'x':
-                case 'u':
-                case '0':
+                case 'f', 'n', 'r', 't', 'v', 'c', 'x', 'u', '0':
                     c = cast(char)escape();
                     goto Lbyte;
 
-                case '1': case '2': case '3':
-                case '4': case '5': case '6':
-                case '7': case '8': case '9':
+		case '1': .. case '9':
                     c -= '1';
                     if (c < re_nsub)
                     {   buf.write(REbackref);
@@ -2411,20 +2399,20 @@ public int test(string s)
 
                         switch (qc)
                         {
-                        case '{':
-                        case '*':
-                        case '+':
+                        case '{'!:
+                        case '*'!:
+                        case '+'!:
                         case '?':
                             if (q == p)
                                 goto Lchar;
                             q--;
                             break;
 
-                        case '(':   case ')':
-                        case '|':
-                        case '[':   case ']':
-                        case '.':   case '^':
-                        case '$':   case '\\':
+                        case '('!:  case ')'!:
+                        case '|'!:
+                        case '['!:  case ']'!:
+                        case '.'!:  case '^'!:
+                        case '$'!:  case '\\'!:
                         case '}':
                             break;
 
@@ -2541,8 +2529,7 @@ private:
             r.setbit2(0);
         switch (pattern[p])
         {
-        case ']':
-        case '-':
+        case ']', '-':
             c = pattern[p];
             p++;
             r.setbit2(c);
@@ -2564,14 +2551,14 @@ private:
             {
             case ']':
                 switch (rs)
-                {   case RS.dash:
+                {   case RS.dash!:
                         r.setbit2('-');
                 case RS.rliteral:
                     r.setbit2(c);
                     break;
                 case RS.start:
                     break;
-                default:
+                default!:
                     assert(0);
                 }
                 p++;
@@ -2622,7 +2609,7 @@ private:
 
                 Lrs:
                     switch (rs)
-                    {   case RS.dash:
+                    {   case RS.dash!:
                             r.setbit2('-');
                     case RS.rliteral:
                         r.setbit2(c);
@@ -2658,7 +2645,7 @@ private:
                 p++;
             Lrange:
                 switch (rs)
-                {   case RS.rliteral:
+                {   case RS.rliteral!:
                         r.setbit2(c);
                 case RS.start:
                     c = c2;
@@ -2677,7 +2664,7 @@ private:
                     rs = RS.start;
                     break;
 
-                default:
+                default!:
                     assert(0);
                 }
                 continue;
@@ -2753,14 +2740,7 @@ private:
             c &= 0x1F;
             break;
 
-        case '0':
-        case '1':
-        case '2':
-        case '3':
-        case '4':
-        case '5':
-        case '6':
-        case '7':
+        case '0': .. case '7':
             c -= '0';
             for (i = 0; i < 2; i++)
             {
@@ -2849,41 +2829,41 @@ private:
             //printf("\tprog[%d] = %d, %d\n", i, prog[i], REstring);
             switch (prog[i])
             {
-            case REend:
-            case REanychar:
-            case REanystar:
-            case REbackref:
-            case REeol:
-            case REchar:
-            case REichar:
-            case REdchar:
-            case REidchar:
-            case REstring:
-            case REistring:
-            case REtestbit:
-            case REbit:
-            case REnotbit:
-            case RErange:
-            case REnotrange:
-            case REwordboundary:
-            case REnotwordboundary:
-            case REdigit:
-            case REnotdigit:
-            case REspace:
-            case REnotspace:
-            case REword:
-            case REnotword:
+            case REend!:
+            case REanychar!:
+            case REanystar!:
+            case REbackref!:
+            case REeol!:
+            case REchar!:
+            case REichar!:
+            case REdchar!:
+            case REidchar!:
+            case REstring!:
+            case REistring!:
+            case REtestbit!:
+            case REbit!:
+            case REnotbit!:
+            case RErange!:
+            case REnotrange!:
+            case REwordboundary!:
+            case REnotwordboundary!:
+            case REdigit!:
+            case REnotdigit!:
+            case REspace!:
+            case REnotspace!:
+            case REword!:
+            case REnotword!:
                 return;
 
             case REbol:
                 i++;
                 continue;
 
-            case REor:
-            case REnm:
-            case REnmq:
-            case REparen:
-            case REgoto:
+            case REor!:
+            case REnm!:
+            case REnmq!:
+            case REparen!:
+            case REgoto!:
             {
                 auto bitbuf = new OutBuffer;
                 auto r = new Range(bitbuf);
@@ -2902,7 +2882,7 @@ private:
                 }
                 return;
             }
-            default:
+            default!:
                 assert(0);
             }
         }
@@ -2944,7 +2924,7 @@ private:
                 }
                 return 1;
 
-            case REdchar:
+            case REdchar!:
             case REidchar:
                 return 1;
 
@@ -2971,7 +2951,7 @@ private:
                 }
                 return 1;
 
-            case REtestbit:
+            case REtestbit!:
             case REbit:
                 maxc = (cast(ushort *)&prog[i + 1])[0];
                 maxb = (cast(ushort *)&prog[i + 1])[1];
@@ -2994,7 +2974,7 @@ private:
                     r.base[b] |= ~prog[i + 1 + 4 + b];
                 return 1;
 
-            case REbol:
+            case REbol!:
             case REeol:
                 return 0;
 
@@ -3011,7 +2991,7 @@ private:
             case REanystar:
                 return 0;
 
-            case REnm:
+            case REnm!:
             case REnmq:
                 // len, n, m, ()
                 len = (cast(uint *)&prog[i + 1])[0];
@@ -3035,7 +3015,7 @@ private:
             case REend:
                 return 0;
 
-            case REwordboundary:
+            case REwordboundary!:
             case REnotwordboundary:
                 return 0;
 
@@ -3084,7 +3064,7 @@ private:
             case REbackref:
                 return 0;
 
-            default:
+            default!:
                 assert(0);
             }
         }
@@ -3150,8 +3130,7 @@ private:
                 rm_eo = input.length;
                 goto Lstring;
 
-            case '0': case '1': case '2': case '3': case '4':
-            case '5': case '6': case '7': case '8': case '9':
+            case '0': .. case '9':
                 i = c - '0';
                 if (f + 1 == format.length)
                 {
diff -rupdwN /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/socket.d ./src/phobos/std/socket.d
--- /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/socket.d	2009-11-05 01:35:42.000000000 -0500
+++ ./src/phobos/std/socket.d	2009-11-20 18:25:21.000000000 -0500
@@ -1277,6 +1277,7 @@ class Socket
 
 			default:
 				result = new UnknownAddress;
+				break;
 		}
 		return result;
 	}
diff -rupdwN /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/stream.d ./src/phobos/std/stream.d
--- /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/stream.d	2009-11-05 01:35:42.000000000 -0500
+++ ./src/phobos/std/stream.d	2009-11-20 18:25:21.000000000 -0500
@@ -477,7 +477,7 @@ class Stream : InputStream, OutputStream
     char ch = getc();
     while (readable) {
       switch (ch) {
-      case '\r':
+      case '\r'!:
 	if (seekable) {
 	  ch = getc();
 	  if (ch != '\n')
@@ -485,12 +485,12 @@ class Stream : InputStream, OutputStream
 	} else {
 	  prevCr = true;
 	}
-      case '\n':
+      case '\n'!:
       case char.init:
 	result.length = strlen;
 	return result;
 
-      default:
+      default!:
 	if (strlen < result.length) {
 	  result[strlen] = ch;
 	} else {
@@ -519,7 +519,7 @@ class Stream : InputStream, OutputStream
     wchar c = getcw();
     while (readable) {
       switch (c) {
-      case '\r':
+      case '\r'!:
 	if (seekable) {
 	  c = getcw();
 	  if (c != '\n')
@@ -527,12 +527,12 @@ class Stream : InputStream, OutputStream
 	} else {
 	  prevCr = true;
 	}
-      case '\n':
+      case '\n'!:
       case wchar.init:
 	result.length = strlen;
 	return result;
 
-      default:
+      default!:
 	if (strlen < result.length) {
 	  result[strlen] = c;
 	} else {
@@ -737,15 +737,15 @@ class Stream : InputStream, OutputStream
 	  i++;
 	// check the typechar and act accordingly
 	switch (fmt[i]) {
-	case 'd':	// decimal/hexadecimal/octal integer
-	case 'D':
-	case 'u':
-	case 'U':
-	case 'o':
-	case 'O':
-	case 'x':
-	case 'X':
-	case 'i':
+	case 'd'!:	// decimal/hexadecimal/octal integer
+	case 'D'!:
+	case 'u'!:
+	case 'U'!:
+	case 'o'!:
+	case 'O'!:
+	case 'x'!:
+	case 'X'!:
+	case 'i'!:
 	case 'I':
 	  {
 	    while (iswhite(c)) {
@@ -780,7 +780,7 @@ class Stream : InputStream, OutputStream
 	    long n = 0;
 	    switch (ifmt)
 	    {
-		case 'd':	// decimal
+		case 'd'!:	// decimal
 		case 'u': {
 		  while (isdigit(c) && width) {
 		    n = n * 10 + (c - '0');
@@ -812,7 +812,7 @@ class Stream : InputStream, OutputStream
 		  }
 		} break;
 
-		default:
+		default!:
 		    assert(0);
 	    }
 	    if (neg)
@@ -846,11 +846,11 @@ class Stream : InputStream, OutputStream
 	    i++;
 	  } break;
 
-	case 'f':	// float
-	case 'F':
-	case 'e':
-	case 'E':
-	case 'g':
+	case 'f'!:	// float
+	case 'F'!:
+	case 'e'!:
+	case 'E'!:
+	case 'g'!:
 	case 'G':
 	  {
 	    while (iswhite(c)) {
@@ -2290,13 +2290,13 @@ class EndianStream : FilterStream {
 	ubyte x = *startb;
 	*startb = *(startb+1);
 	*(startb+1) = x;
-	break;
-      }
+      } break;
+
       case 4: {
 	*start = bswap(*start);
-	break;
-      }
-      default: {
+      } break;
+
+      default!: {
 	uint* end = cast(uint*)(buffer + size - uint.sizeof);
 	while (start < end) {
 	  uint x = bswap(*start);
@@ -2558,7 +2558,7 @@ class TArrayStream(Buffer): Stream {
     case SeekPos.Set: scur = offset; break;
     case SeekPos.Current: scur = cast(long)(cur + offset); break;
     case SeekPos.End: scur = cast(long)(len + offset); break;
-    default:
+    default!:
 	assert(0);
     }
 
@@ -2855,7 +2855,7 @@ class SliceStream : FilterStream {
 	else
 	  spos = cast(long)(s.size - low + offset);
 	break;
-      default:
+      default!:
 	assert(0);
     }
 
diff -rupdwN /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/string.d ./src/phobos/std/string.d
--- /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/string.d	2009-11-05 01:35:42.000000000 -0500
+++ ./src/phobos/std/string.d	2009-11-20 18:25:21.000000000 -0500
@@ -1056,12 +1056,7 @@ string capwords(string s)
     {
     switch (s[i])
     {
-        case ' ':
-        case '\t':
-        case '\f':
-        case '\r':
-        case '\n':
-        case '\v':
+        case ' ', '\t', '\f', '\r', '\n', '\v':
         if (inword)
         {
             r ~= capitalize(s[istart .. i]);
@@ -1211,12 +1206,7 @@ S[] split(S)(S s) if (isSomeString!S)
     {
         switch (s[i])
         {
-        case ' ':
-        case '\t':
-        case '\f':
-        case '\r':
-        case '\n':
-        case '\v':
+        case ' ', '\t', '\f', '\r', '\n', '\v':
             if (inword)
             {
                 result ~= s[istart .. i];
@@ -2054,10 +2044,7 @@ string expandtabs(string str, int tabsiz
         column += nspaces;
         break;
 
-        case '\r':
-        case '\n':
-        case PS:
-        case LS:
+        case '\r', '\n', PS, LS:
         column = 0;
         goto L1;
 
@@ -2153,10 +2140,7 @@ string entab(string s, int tabsize = 8)
         column = (column + tabsize) / tabsize * tabsize;
         break;
 
-        case '\r':
-        case '\n':
-        case PS:
-        case LS:
+        case '\r', '\n', PS, LS:
         // Truncate any trailing spaces or tabs
         if (nwhite)
         {
@@ -2976,7 +2960,7 @@ string succ(string s)
             c = '0';
             carry = '1';
             goto Lcarry;
-        case 'z':
+        case 'z'!:
         case 'Z':
             c -= 'Z' - 'A';
             carry = c;
@@ -3066,7 +3050,7 @@ string tr(string str, string from, strin
         case 'c':   mod_c = 1; break;   // complement
         case 'd':   mod_d = 1; break;   // delete unreplaced chars
         case 's':   mod_s = 1; break;   // squeeze duplicated replaced chars
-        default:    assert(0);
+        default!:   assert(0);
     }
     }
 
@@ -3800,10 +3784,7 @@ size_t column(string str, int tabsize = 
             column = (column + tabsize) / tabsize * tabsize;
             break;
 
-        case '\r':
-        case '\n':
-        case PS:
-        case LS:
+        case '\r', '\n', PS, LS:
             column = 0;
             break;
 
diff -rupdwN /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/utf.d ./src/phobos/std/utf.d
--- /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/utf.d	2009-11-05 01:35:42.000000000 -0500
+++ ./src/phobos/std/utf.d	2009-11-20 18:25:21.000000000 -0500
@@ -504,7 +504,7 @@ body
     uint n = void;
     switch (u & 0b1111_0000)
     {
-    case 0b1100_0000: case 0b1101_0000:
+    case 0b1100_0000, 0b1101_0000:
         n = 2;
         break;
     case 0b1110_0000:
@@ -514,7 +514,7 @@ body
         enforce(!(u & 0b0000_1000));
         n = 4;
         break;
-    default:
+    default!:
         enforce(0);
     }
 
diff -rupdwN /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/variant.d ./src/phobos/std/variant.d
--- /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/variant.d	2009-11-05 01:35:42.000000000 -0500
+++ ./src/phobos/std/variant.d	2009-11-20 18:25:21.000000000 -0500
@@ -216,15 +216,15 @@ private:
             string * target = cast(string*) parm;
             *target = "<Uninitialized VariantN>";
             break;
-        case OpID.get:
-        case OpID.testConversion:
-        case OpID.index:
-        case OpID.indexAssign:
-        case OpID.catAssign:
-        case OpID.length:
+        case OpID.get!:
+        case OpID.testConversion!:
+        case OpID.index!:
+        case OpID.indexAssign!:
+        case OpID.catAssign!:
+        case OpID.length!:
             throw new VariantException(
                 "Attempt to use an uninitialized VariantN");
-        default: assert(false, "Invalid OpID");
+        default!: assert(false, "Invalid OpID");
         }
         return 0;
     }
@@ -359,6 +359,8 @@ private:
             {
                 throw new VariantException(typeid(A), typeid(string));
             }
+            assert(0);
+            break;
 
         case OpID.index:
             // Added allowed!(...) prompted by a bug report by Chris
@@ -383,6 +385,8 @@ private:
             {
                 throw new VariantException(typeid(A), typeid(void[]));
             }
+            assert(0);
+            break;
 
         case OpID.indexAssign:
             static if (isArray!(A) && is(typeof((*zis)[0] = (*zis)[0])))
@@ -405,6 +409,8 @@ private:
             {
                 throw new VariantException(typeid(A), typeid(void[]));
             }
+            assert(0);
+            break;
 
         case OpID.catAssign:
             static if (is(typeof((*zis)[0])) && is(typeof((*zis) ~= *zis)))
@@ -428,6 +434,8 @@ private:
             {
                 throw new VariantException(typeid(A), typeid(void[]));
             }
+            assert(0);
+            break;
 
         case OpID.length:
             static if (is(typeof(zis.length)))
@@ -438,11 +446,13 @@ private:
             {
                 throw new VariantException(typeid(A), typeid(void[]));
             }
+	    assert(0);
+	    break;
 
-        case OpID.apply:
+        case OpID.apply!:
             assert(0);
 
-        default: assert(false);
+        default!: assert(false);
         }
         return 0;
     }
diff -rupdwN /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/xml.d ./src/phobos/std/xml.d
--- /home/chad/downloads/dlang/dmd.2.036/src/phobos/std/xml.d	2009-11-05 01:35:42.000000000 -0500
+++ ./src/phobos/std/xml.d	2009-11-20 18:25:21.000000000 -0500
@@ -2400,22 +2400,22 @@ private
             int n = 0;
             switch(d)
             {
-                case 'F','f': ++n;
-                case 'E','e': ++n;
-                case 'D','d': ++n;
-                case 'C','c': ++n;
-                case 'B','b': ++n;
-                case 'A','a': ++n;
-                case '9': ++n;
-                case '8': ++n;
-                case '7': ++n;
-                case '6': ++n;
-                case '5': ++n;
-                case '4': ++n;
-                case '3': ++n;
-                case '2': ++n;
-                case '1': ++n;
-                case '0': break;
+                case 'F','f'!: ++n;
+                case 'E','e'!: ++n;
+                case 'D','d'!: ++n;
+                case 'C','c'!: ++n;
+                case 'B','b'!: ++n;
+                case 'A','a'!: ++n;
+                case '9'!: ++n;
+                case '8'!: ++n;
+                case '7'!: ++n;
+                case '6'!: ++n;
+                case '5'!: ++n;
+                case '4'!: ++n;
+                case '3'!: ++n;
+                case '2'!: ++n;
+                case '1'!: ++n;
+                case '0'!: break;
                 default: n = 100; break;
             }
             if (n >= radix) break;
