Index: src/ResolvExpr/Resolver.cc
===================================================================
--- src/ResolvExpr/Resolver.cc	(revision 071a31a897b52a4c1abdb6c4c2536e3bfe6257fb)
+++ src/ResolvExpr/Resolver.cc	(revision e0323a238ee2dc0c70557f1cae4fd4fb3899b3bf)
@@ -10,5 +10,5 @@
 // Created On       : Sun May 17 12:17:01 2015
 // Last Modified By : Rob Schluntz
-// Last Modified On : Thu Jan 14 16:45:32 2016
+// Last Modified On : Wed Mar 30 15:47:19 2016
 // Update Count     : 203
 //
@@ -478,7 +478,7 @@
 	void Resolver::visit( ConstructorInit *ctorInit ) {
 		TypeEnvironment env;
-		AlternativeFinder finder( *this, env );
 		try {
-			finder.find( ctorInit->get_ctor() );
+			maybeAccept( ctorInit->get_ctor(), *this );
+			maybeAccept( ctorInit->get_dtor(), *this );
 		} catch ( SemanticError ) {
 			// no alternatives for the constructor initializer - fallback on C-style initializer
@@ -488,28 +488,19 @@
 		}
 
-		assert( ! finder.get_alternatives().empty() );
-
-		if ( finder.get_alternatives().size() == 1 ) {
-			Alternative &choice = finder.get_alternatives().front();
-			if ( ApplicationExpr * appExpr = dynamic_cast< ApplicationExpr * >( choice.expr ) ) {
-				if ( VariableExpr * function = dynamic_cast< VariableExpr * > ( appExpr->get_function() ) ) {
-					if ( LinkageSpec::isOverridable( function->get_var()->get_linkage() ) ) {
-						// if the constructor that was found is intrinsic or autogenerated, reset to C-style
-						// initializer so that code generation is easy to handle
-						fallbackInit( ctorInit );
-						return;
-					}
-				}
+		if ( ExprStmt * exprStmt = dynamic_cast< ExprStmt * > ( ctorInit->get_ctor() ) ) {
+			ApplicationExpr * appExpr = dynamic_cast< ApplicationExpr * >( exprStmt->get_expr() );
+			assert( appExpr );
+			VariableExpr * function = dynamic_cast< VariableExpr * > ( appExpr->get_function() );
+			assert( function );
+			if ( LinkageSpec::isOverridable( function->get_var()->get_linkage() ) ) {
+				// if the constructor that was found is intrinsic or autogenerated, reset to C-style
+				// initializer so that code generation is easy to handle
+				fallbackInit( ctorInit );
+				return;
 			}
-			// found a constructor - can get rid of C-style initializer
-			Expression *newExpr = choice.expr->clone();
-			finishExpr( newExpr, choice.env );
-			ctorInit->set_ctor( newExpr );
-			delete ctorInit->get_init();
-			ctorInit->set_init( NULL );
-		} else {
-			// too many constructors found
-			assert(false);
-		}
+		}
+		// found a constructor - can get rid of C-style initializer
+		delete ctorInit->get_init();
+		ctorInit->set_init( NULL );
 	}
 } // namespace ResolvExpr
