/// <exception cref="ArgumentNullException"><paramref name="context" /> or <paramref name="jumpTarget" /> is <c>null</c>.</exception> internal LSLJumpStatementNode( LSLParser.JumpStatementContext context, LSLLabelStatementNode jumpTarget ) { if (context == null) { throw new ArgumentNullException("context"); } if (jumpTarget == null) { throw new ArgumentNullException("jumpTarget"); } LabelName = context.jump_target.Text; JumpTarget = jumpTarget; JumpTarget.AddJumpToHere(this); SourceRange = new LSLSourceCodeRange(context); SourceRangeLabelName = new LSLSourceCodeRange(context.jump_target); SourceRangeJumpKeyword = new LSLSourceCodeRange(context.jump_keyword); SourceRangeSemicolon = new LSLSourceCodeRange(context.semi_colon); SourceRangesAvailable = true; }
/// <summary> /// Creates an <see cref="LSLJumpStatementNode" /> that jumps to a specified <see cref="LSLLabelStatementNode" />, with /// a <see cref="ParentScopeId" /> of zero. /// <paramref name="jumpTarget" /> receives a <see cref="LSLLabelStatementNode.JumpsToHere" /> reference via /// <see cref="LSLLabelStatementNode.AddJumpToHere" />. /// </summary> /// <param name="jumpTarget">The <see cref="LSLLabelStatementNode" /> to jump to.</param> /// <exception cref="ArgumentNullException"><paramref name="jumpTarget" /> is <c>null</c>.</exception> /// <exception cref="ArgumentException"><paramref name="jumpTarget" /> does not have a Parent, is not already in the syntax tree.</exception> public LSLJumpStatementNode(LSLLabelStatementNode jumpTarget) { if (jumpTarget == null) { throw new ArgumentNullException("jumpTarget"); } if (jumpTarget.Parent == null) { throw new ArgumentException("jumpTarget.Parent is null, must have a parent (be part of the syntax tree) prior to being jumped to.", "jumpTarget"); } LabelName = jumpTarget.LabelName; JumpTarget = jumpTarget; JumpTarget.AddJumpToHere(this); }