diff dmd/Parser.d @ 123:9e39c7de8438

Make dmd test suite compile
author korDen
date Fri, 03 Sep 2010 20:46:58 +0400
parents c77e9f4f1793
children 767a01c2a272
line wrap: on
line diff
--- a/dmd/Parser.d	Thu Sep 02 23:37:49 2010 +0100
+++ b/dmd/Parser.d	Fri Sep 03 20:46:58 2010 +0400
@@ -1718,14 +1718,44 @@
 		return f;
 	}
 	
+	/*****************************************
+	 * Parse a new definition:
+	 *	new(arguments) { body }
+	 * Current token is 'new'.
+	 */
     NewDeclaration parseNew()
 	{
-		assert(false);
+		NewDeclaration f;
+		scope Arguments arguments = new Arguments();
+		int varargs;
+		Loc loc = this.loc;
+
+		nextToken();
+		arguments = parseParameters(&varargs);
+		f = new NewDeclaration(loc, Loc(0), arguments, varargs);
+		parseContracts(f);
+		return f;
 	}
 	
+	/*****************************************
+	 * Parse a delete definition:
+	 *	delete(arguments) { body }
+	 * Current token is 'delete'.
+	 */
     DeleteDeclaration parseDelete()
 	{
-		assert(false);
+		DeleteDeclaration f;
+		scope Arguments arguments;
+		int varargs;
+		Loc loc = this.loc;
+
+		nextToken();
+		arguments = parseParameters(&varargs);
+		if (varargs)
+			error("... not allowed in delete function parameter list");
+		f = new DeleteDeclaration(loc, Loc(0), arguments);
+		parseContracts(f);
+		return f;
 	}
 	
     Arguments parseParameters(int* pvarargs)