X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Literal.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Literal.java index b91f015..e643884 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Literal.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Literal.java @@ -1,37 +1,55 @@ +/******************************************************************************* + * Copyright (c) 2000, 2003 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ package net.sourceforge.phpdt.internal.compiler.ast; -import java.util.List; +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.BlockScope; +import net.sourceforge.phpdt.internal.compiler.lookup.TypeBinding; -/** - * Here is the Superclass of the Literal expressions. - * @author Matthieu Casanova - */ public abstract class Literal extends Expression { - /** - * Create a Literal. - * @param sourceStart starting offset - * @param sourceEnd ending offset - */ - public Literal(final int sourceStart, final int sourceEnd) { - super(sourceStart, sourceEnd); - } - - /** - * Get the variables from outside (parameters, globals ...) - */ - public void getOutsideVariable(final List list) { - } - - /** - * get the modified variables. - */ - public void getModifiedVariable(final List list) { - } - - /** - * Get the variables used. - */ - public void getUsedVariable(final List list) { - } + public Literal(int s, int e) { + sourceStart = s; + sourceEnd = e; + } + + public FlowInfo analyseCode(BlockScope currentScope, + FlowContext flowContext, FlowInfo flowInfo) { + return flowInfo; + } + + public abstract void computeConstant(); + + // ON ERROR constant STAYS NULL + public abstract TypeBinding literalType(BlockScope scope); + + public StringBuffer printExpression(int indent, StringBuffer output) { + + return output.append(source()); + } + + public TypeBinding resolveType(BlockScope scope) { + // compute the real value, which must range its type's range + + computeConstant(); + if (constant == null) { + scope.problemReporter().constantOutOfRange(this); + constant = Constant.NotAConstant; + return null; + } + this.resolvedType = literalType(scope); + return this.resolvedType; + } + + public abstract char[] source(); }