public void PushBreakOrContinueInfo(IList<string> labelNames, ILLabel breakTarget, ILLabel continueTarget, bool labelledOnly)
{
if (breakTarget == null)
throw new ArgumentNullException("breakTarget");
// Check the label doesn't already exist.
if (labelNames != null)
{
foreach (var labelName in labelNames)
foreach (var info in this.breakOrContinueStack)
if (info.LabelNames != null && info.LabelNames.Contains(labelName) == true)
throw new JavaScriptException(this.Engine, ErrorType.SyntaxError, string.Format("Label '{0}' has already been declared", labelName), this.SourceSpan.StartLine, this.Source.Path, this.FunctionName);
}
// Push the info to the stack.
this.breakOrContinueStack.Push(new BreakOrContinueInfo()
{
LabelNames = labelNames,
LabelledOnly = labelledOnly,
BreakTarget = breakTarget,
ContinueTarget = continueTarget
});
}