38 lines
1.3 KiB
C#
38 lines
1.3 KiB
C#
using System.Collections.Generic;
|
|
using System.Collections.Immutable;
|
|
using Upsilon.Parser;
|
|
using Upsilon.Text;
|
|
|
|
namespace Upsilon.Binder
|
|
{
|
|
public class UnboundFunctionExpression : BoundFunctionExpression
|
|
{
|
|
public UnboundFunctionExpression(ImmutableArray<BoundVariableSymbol> parameters,
|
|
BlockStatementSyntax unboundBlock, TextSpan span) : base(parameters, null, span)
|
|
{
|
|
UnboundBlock = unboundBlock;
|
|
}
|
|
|
|
public override BoundKind Kind => BoundKind.BoundPromise;
|
|
|
|
public BlockStatementSyntax UnboundBlock { get; }
|
|
|
|
public override IEnumerable<BoundNode> GetNodeAtPosition(int characterPosition)
|
|
{
|
|
foreach (var parameter in Parameters)
|
|
{
|
|
if (characterPosition >= parameter.Span.Start && characterPosition <= parameter.Span.End)
|
|
foreach (var boundNode in parameter.GetNodeAtPosition(characterPosition))
|
|
yield return boundNode;
|
|
}
|
|
|
|
if (Block != null)
|
|
{
|
|
if (characterPosition >= Block.Span.Start && characterPosition <= Block.Span.End)
|
|
foreach (var boundNode in Block.GetNodeAtPosition(characterPosition))
|
|
yield return boundNode;
|
|
}
|
|
yield return this;
|
|
}
|
|
}
|
|
} |