...
This commit is contained in:
41
compiler/NubLang/Code/SourceFile.cs
Normal file
41
compiler/NubLang/Code/SourceFile.cs
Normal file
@@ -0,0 +1,41 @@
|
||||
namespace NubLang.Code;
|
||||
|
||||
public class SourceFile
|
||||
{
|
||||
private string? _content;
|
||||
|
||||
public SourceFile(string path)
|
||||
{
|
||||
Path = path ?? throw new ArgumentNullException(nameof(path));
|
||||
}
|
||||
|
||||
public string Path { get; }
|
||||
|
||||
public string GetText() => _content ??= File.ReadAllText(Path);
|
||||
public override string ToString() => Path;
|
||||
|
||||
public override bool Equals(object? obj)
|
||||
{
|
||||
return obj is SourceFile other && other.Path == Path;
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return HashCode.Combine(typeof(SourceFile), Path);
|
||||
}
|
||||
|
||||
public static bool operator ==(SourceFile? left, SourceFile? right) => Equals(left, right);
|
||||
public static bool operator !=(SourceFile? left, SourceFile? right) => !Equals(left, right);
|
||||
}
|
||||
|
||||
public class SourceFileSpan
|
||||
{
|
||||
public SourceFileSpan(SourceFile sourceFile, SourceSpan span)
|
||||
{
|
||||
SourceFile = sourceFile;
|
||||
Span = span;
|
||||
}
|
||||
|
||||
public SourceFile SourceFile { get; }
|
||||
public SourceSpan Span { get; }
|
||||
}
|
||||
Reference in New Issue
Block a user