merged from HEAD: delete is expression
diff --git a/plugins/org.eclipse.dltk.javascript.formatter/src/org/eclipse/dltk/javascript/ast/DeleteStatement.java b/plugins/org.eclipse.dltk.javascript.formatter/src/org/eclipse/dltk/javascript/ast/DeleteStatement.java
index 79c71e0..0e329c9 100644
--- a/plugins/org.eclipse.dltk.javascript.formatter/src/org/eclipse/dltk/javascript/ast/DeleteStatement.java
+++ b/plugins/org.eclipse.dltk.javascript.formatter/src/org/eclipse/dltk/javascript/ast/DeleteStatement.java
@@ -16,11 +16,10 @@
 import org.eclipse.dltk.ast.ASTNode;
 import org.eclipse.dltk.javascript.formatter.internal.nodes.JSLiterals;
 
-public class DeleteStatement extends Statement implements ISemicolonStatement {
+public class DeleteStatement extends Expression {
 
 	private Keyword deleteKeyword;
 	private Expression expression;
-	private int semic = -1;
 
 	public DeleteStatement(ASTNode parent) {
 		super(parent);
@@ -42,14 +41,6 @@
 		this.deleteKeyword = keyword;
 	}
 
-	public int getSemicolonPosition() {
-		return this.semic;
-	}
-
-	public void setSemicolonPosition(int semic) {
-		this.semic = semic;
-	}
-
 	@Override
 	public String toSourceString(String indentationString) {
 
@@ -62,8 +53,6 @@
 		buffer.append(Keywords.DELETE);
 		buffer.append(JSLiterals.SPACE);
 		buffer.append(expression.toSourceString(indentationString));
-		if (semic > 0)
-			buffer.append(JSLiterals.SEMICOLON);
 		buffer.append(JSLiterals.EOL);
 
 		return buffer.toString();
diff --git a/plugins/org.eclipse.dltk.javascript.formatter/src/org/eclipse/dltk/javascript/formatter/internal/FormatterNodeBuilder.java b/plugins/org.eclipse.dltk.javascript.formatter/src/org/eclipse/dltk/javascript/formatter/internal/FormatterNodeBuilder.java
index c1ca932..06d6108 100644
--- a/plugins/org.eclipse.dltk.javascript.formatter/src/org/eclipse/dltk/javascript/formatter/internal/FormatterNodeBuilder.java
+++ b/plugins/org.eclipse.dltk.javascript.formatter/src/org/eclipse/dltk/javascript/formatter/internal/FormatterNodeBuilder.java
@@ -501,7 +501,7 @@
 
 				visit(node.getExpression());
 
-				processOptionalSemicolon(formatterNode, node);
+				checkedPop(formatterNode, node.getExpression().sourceEnd());
 				return true;
 			}
 
diff --git a/plugins/org.eclipse.dltk.javascript.formatter/src/org/eclipse/dltk/javascript/parser/JSTransformer.java b/plugins/org.eclipse.dltk.javascript.formatter/src/org/eclipse/dltk/javascript/parser/JSTransformer.java
index 1517085..b3a51d1 100644
--- a/plugins/org.eclipse.dltk.javascript.formatter/src/org/eclipse/dltk/javascript/parser/JSTransformer.java
+++ b/plugins/org.eclipse.dltk.javascript.formatter/src/org/eclipse/dltk/javascript/parser/JSTransformer.java
@@ -1642,9 +1642,6 @@
 		statement.setExpression((Expression) transformNode(node.getChild(0),
 				statement));
 
-		statement.setSemicolonPosition(getTokenOffset(JSParser.SEMIC, node
-				.getTokenStopIndex(), node.getTokenStopIndex()));
-
 		statement.setStart(getTokenOffset(node.getTokenStartIndex()));
 		statement.setEnd(getTokenOffset(node.getTokenStopIndex() + 1));
 
diff --git a/plugins/org.eclipse.dltk.javascript.parser/src/org/eclipse/dltk/javascript/ast/DeleteStatement.java b/plugins/org.eclipse.dltk.javascript.parser/src/org/eclipse/dltk/javascript/ast/DeleteStatement.java
index 79c71e0..0e329c9 100644
--- a/plugins/org.eclipse.dltk.javascript.parser/src/org/eclipse/dltk/javascript/ast/DeleteStatement.java
+++ b/plugins/org.eclipse.dltk.javascript.parser/src/org/eclipse/dltk/javascript/ast/DeleteStatement.java
@@ -16,11 +16,10 @@
 import org.eclipse.dltk.ast.ASTNode;
 import org.eclipse.dltk.javascript.formatter.internal.nodes.JSLiterals;
 
-public class DeleteStatement extends Statement implements ISemicolonStatement {
+public class DeleteStatement extends Expression {
 
 	private Keyword deleteKeyword;
 	private Expression expression;
-	private int semic = -1;
 
 	public DeleteStatement(ASTNode parent) {
 		super(parent);
@@ -42,14 +41,6 @@
 		this.deleteKeyword = keyword;
 	}
 
-	public int getSemicolonPosition() {
-		return this.semic;
-	}
-
-	public void setSemicolonPosition(int semic) {
-		this.semic = semic;
-	}
-
 	@Override
 	public String toSourceString(String indentationString) {
 
@@ -62,8 +53,6 @@
 		buffer.append(Keywords.DELETE);
 		buffer.append(JSLiterals.SPACE);
 		buffer.append(expression.toSourceString(indentationString));
-		if (semic > 0)
-			buffer.append(JSLiterals.SEMICOLON);
 		buffer.append(JSLiterals.EOL);
 
 		return buffer.toString();
diff --git a/plugins/org.eclipse.dltk.javascript.parser/src/org/eclipse/dltk/javascript/parser/JSTransformer.java b/plugins/org.eclipse.dltk.javascript.parser/src/org/eclipse/dltk/javascript/parser/JSTransformer.java
index 1517085..b3a51d1 100644
--- a/plugins/org.eclipse.dltk.javascript.parser/src/org/eclipse/dltk/javascript/parser/JSTransformer.java
+++ b/plugins/org.eclipse.dltk.javascript.parser/src/org/eclipse/dltk/javascript/parser/JSTransformer.java
@@ -1642,9 +1642,6 @@
 		statement.setExpression((Expression) transformNode(node.getChild(0),
 				statement));
 
-		statement.setSemicolonPosition(getTokenOffset(JSParser.SEMIC, node
-				.getTokenStopIndex(), node.getTokenStopIndex()));
-
 		statement.setStart(getTokenOffset(node.getTokenStartIndex()));
 		statement.setEnd(getTokenOffset(node.getTokenStopIndex() + 1));