Module system

This commit is contained in:
nub31
2025-09-11 23:03:44 +02:00
parent 8c76f75f7c
commit 0fd1af7e60
15 changed files with 265 additions and 167 deletions

View File

@@ -1,6 +1,6 @@
namespace NubLang.Code;
public readonly struct SourceSpan : IEquatable<SourceSpan>
public readonly struct SourceSpan : IEquatable<SourceSpan>, IComparable<SourceSpan>
{
public static SourceSpan Zero => new(SourceLocation.Zero, SourceLocation.Zero);
@@ -54,4 +54,15 @@ public readonly struct SourceSpan : IEquatable<SourceSpan>
public static bool operator ==(SourceSpan left, SourceSpan right) => Equals(left, right);
public static bool operator !=(SourceSpan left, SourceSpan right) => !Equals(left, right);
public static bool operator <(SourceSpan left, SourceSpan right) => left.CompareTo(right) < 0;
public static bool operator <=(SourceSpan left, SourceSpan right) => left.CompareTo(right) <= 0;
public static bool operator >(SourceSpan left, SourceSpan right) => left.CompareTo(right) > 0;
public static bool operator >=(SourceSpan left, SourceSpan right) => left.CompareTo(right) >= 0;
public int CompareTo(SourceSpan other)
{
var startComparison = Start.CompareTo(other.Start);
return startComparison != 0 ? startComparison : End.CompareTo(other.End);
}
}