*******************************************************************************/
package net.sourceforge.phpeclipse.internal.compiler.ast;
-import net.sourceforge.phpdt.internal.compiler.codegen.Label;
import net.sourceforge.phpdt.internal.compiler.flow.FlowContext;
import net.sourceforge.phpdt.internal.compiler.flow.FlowInfo;
import net.sourceforge.phpdt.internal.compiler.impl.Constant;
import net.sourceforge.phpdt.internal.compiler.lookup.BaseTypeBinding;
import net.sourceforge.phpdt.internal.compiler.lookup.BlockScope;
import net.sourceforge.phpdt.internal.compiler.lookup.TypeBinding;
-import net.sourceforge.phpdt.internal.compiler.problem.ShouldNotImplement;
-import net.sourceforge.phpdt.internal.compiler.util.Util;
-public abstract class Expression extends Statement {
+public class Expression extends Statement {
//some expression may not be used - from a java semantic point
//of view only - as statements. Other may. In order to avoid the creation
* Expression statements are plain expressions, however they generate like
* normal expressions with no value required.
*
- * @param currentScope org.eclipse.jdt.internal.compiler.lookup.BlockScope
- * @param codeStream org.eclipse.jdt.internal.compiler.codegen.CodeStream
+ * @param currentScope net.sourceforge.phpdt.internal.compiler.lookup.BlockScope
+ * @param codeStream net.sourceforge.phpdt.internal.compiler.codegen.CodeStream
*/
// public void generateCode(BlockScope currentScope, CodeStream codeStream) {
//
/**
* Every expression is responsible for generating its implicit conversion when necessary.
*
- * @param currentScope org.eclipse.jdt.internal.compiler.lookup.BlockScope
- * @param codeStream org.eclipse.jdt.internal.compiler.codegen.CodeStream
+ * @param currentScope net.sourceforge.phpdt.internal.compiler.lookup.BlockScope
+ * @param codeStream net.sourceforge.phpdt.internal.compiler.codegen.CodeStream
* @param valueRequired boolean
*/
// public void generateCode(
// codeStream.recordPositionsFrom(pc, this.sourceStart);
// } else {
// // actual non-constant code generation
-// throw new ShouldNotImplement(Util.bind("ast.missingCode")); //$NON-NLS-1$
+// throw new ShouldNotImplement(ProjectPrefUtil.bind("ast.missingCode")); //$NON-NLS-1$
// }
// }
// */
// public void generateOptimizedStringBuffer(
// BlockScope blockScope,
-// org.eclipse.jdt.internal.compiler.codegen.CodeStream codeStream,
+// net.sourceforge.phpdt.internal.compiler.codegen.CodeStream codeStream,
// int typeID) {
//
// generateCode(blockScope, codeStream, true);
public boolean isTypeReference() {
return false;
}
+ public StringBuffer print(int indent, StringBuffer output) {
+ printIndent(indent, output);
+ return printExpression(indent, output);
+ }
+ public StringBuffer printExpression(int indent, StringBuffer output) {
+ output.append(super.toString(0));
+ return output;
+ }
+
+ public StringBuffer printStatement(int indent, StringBuffer output) {
+ return print(indent, output).append(";"); //$NON-NLS-1$
+ }
public void resolve(BlockScope scope) {
// drops the returning expression's type whatever the type is.