module default_constructor_runme; import default_constructor.G; void main() { // D2 does not support something akin to D1/Tango dispose() for deterministic // destruction yet. // enforceThrows((){ scope g = new G(); }, "Protected destructor exception should have been thrown"); } private void enforceThrows(void delegate() dg, string errorMessage) { bool hasThrown; try { dg(); } catch (Exception) { hasThrown = true; } finally { if (!hasThrown) { throw new Exception(errorMessage); } } }