TerminalLocation.java

package edu.udel.cis.vsl.tass.model.impl.location;

import edu.udel.cis.vsl.tass.model.IF.SyntaxException;
import edu.udel.cis.vsl.tass.model.IF.location.TerminalLocationIF;
import edu.udel.cis.vsl.tass.model.IF.scope.LocalScopeIF;
import edu.udel.cis.vsl.tass.model.IF.statement.StatementIF;
import edu.udel.cis.vsl.tass.model.IF.statement.StatementIF.StatementKind;

public class TerminalLocation extends Location implements TerminalLocationIF {

	public TerminalLocation(LocalScopeIF scope) {
		super(scope, LocationKind.TERMINAL);
	}

	@Override
	public void complete() throws SyntaxException {
		if (!outgoing.isEmpty()) {
			throw new SyntaxException(this,
					"Terminal location cannot have outgoing statements");
		}
		for (StatementIF statement : this.incomingStatements()) {
			if (statement.kind() != StatementKind.RETURN)
				throw new SyntaxException(statement,
						"Only return statements may end in a terminal location");
		}
		super.complete();
	}
}