diff --git a/Upsilon/Parser/ExpressionSyntax/BinaryExpressionSyntax.cs b/Upsilon/Parser/ExpressionSyntax/BinaryExpressionSyntax.cs index 9d9152f..769976b 100644 --- a/Upsilon/Parser/ExpressionSyntax/BinaryExpressionSyntax.cs +++ b/Upsilon/Parser/ExpressionSyntax/BinaryExpressionSyntax.cs @@ -10,7 +10,7 @@ namespace Upsilon.Parser Left = left; Operator = @operator; Right = right; - Span = new TextSpan(left.Span.Start, right.Span.End); + Span = new TextSpan(left.Span.Start, right.Span.End - left.Span.Start); } public override SyntaxKind Kind => SyntaxKind.BinaryExpression; diff --git a/Upsilon/Parser/StatementSyntax/AssignmentExpressionSyntax.cs b/Upsilon/Parser/StatementSyntax/AssignmentExpressionSyntax.cs index ca731b8..de50fc5 100644 --- a/Upsilon/Parser/StatementSyntax/AssignmentExpressionSyntax.cs +++ b/Upsilon/Parser/StatementSyntax/AssignmentExpressionSyntax.cs @@ -13,7 +13,7 @@ namespace Upsilon.Parser EqualsToken = equalsToken; Expression = expression; var start = LocalToken?.Span.Start ?? Identifier.Span.Start; - Span = new TextSpan(start, Expression.Span.End); + Span = new TextSpan(start, Expression.Span.End - start); } public override SyntaxKind Kind => SyntaxKind.AssignmentStatement; diff --git a/Upsilon/Parser/StatementSyntax/BlockStatementSyntax.cs b/Upsilon/Parser/StatementSyntax/BlockStatementSyntax.cs index 8c3c052..2b6c555 100644 --- a/Upsilon/Parser/StatementSyntax/BlockStatementSyntax.cs +++ b/Upsilon/Parser/StatementSyntax/BlockStatementSyntax.cs @@ -13,7 +13,7 @@ namespace Upsilon.Parser var first = statements.FirstOrDefault(); var last = statements.LastOrDefault(); if (first != null && last != null) - Span = new TextSpan(first.Span.Start, last.Span.End); + Span = new TextSpan(first.Span.Start, last.Span.End - first.Span.Start); } public ImmutableArray Statements { get; } diff --git a/Upsilon/Text/TextSpan.cs b/Upsilon/Text/TextSpan.cs index 2f6264d..b2bf44f 100644 --- a/Upsilon/Text/TextSpan.cs +++ b/Upsilon/Text/TextSpan.cs @@ -11,5 +11,10 @@ namespace Upsilon.Text public int Start { get; } public int Length { get; } public int End => Start + Length; + + public override string ToString() + { + return $"{Start} - {End}"; + } } } \ No newline at end of file