From 70e3883144b90394f18e38f8c44f2a5b5c210302 Mon Sep 17 00:00:00 2001 From: StunxFS Date: Mon, 2 Dec 2024 13:24:40 -0400 Subject: [PATCH] ast: split File.v -> FilePos.v --- compiler/ast/File.v | 34 ---------------------------------- compiler/ast/FilePos.v | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 34 deletions(-) create mode 100644 compiler/ast/FilePos.v diff --git a/compiler/ast/File.v b/compiler/ast/File.v index 381d3939..4953d5d9 100644 --- a/compiler/ast/File.v +++ b/compiler/ast/File.v @@ -18,40 +18,6 @@ mut: lines ?[]string } -pub struct FilePos { -pub mut: - file &File = unsafe { nil } - begin FileLoc - end FileLoc -} - -pub fn (fp &FilePos) contains(loc &FileLoc) bool { - if loc.line > fp.begin.line && loc.line < fp.end.line { - return true - } else if loc.line == fp.begin.line && loc.line == fp.end.line { - return loc.col >= fp.begin.col && loc.col <= fp.end.col - } else if loc.line == fp.begin.line { - return loc.col >= fp.begin.col - } else if loc.line == fp.end.line { - return loc.col <= fp.end.col - } - return false -} - -pub fn (fp &FilePos) str() string { - if fp.begin.line == fp.end.line { - return '${fp.file.filename}:${fp.begin.line + 1}:${fp.begin.col}' - } - return '${fp.file.filename}:${fp.begin.line + 1}:${fp.begin.col}-${fp.end.line + 1}:${fp.end.col}' -} - -pub struct FileLoc { -pub: - pos int - line int - col int -} - pub fn File.new(filename string) &File { content := read_file(filename) return &File{ diff --git a/compiler/ast/FilePos.v b/compiler/ast/FilePos.v new file mode 100644 index 00000000..17d2623a --- /dev/null +++ b/compiler/ast/FilePos.v @@ -0,0 +1,39 @@ +// Copyright (C) 2024-present Jose Mendoza - All rights reserved. Use of this +// source code is governed by an MIT license that can be found in the LICENSE +// file. + +module ast + +pub struct FilePos { +pub mut: + file &File = unsafe { nil } + begin FileLoc + end FileLoc +} + +pub fn (fp &FilePos) contains(loc &FileLoc) bool { + if loc.line > fp.begin.line && loc.line < fp.end.line { + return true + } else if loc.line == fp.begin.line && loc.line == fp.end.line { + return loc.col >= fp.begin.col && loc.col <= fp.end.col + } else if loc.line == fp.begin.line { + return loc.col >= fp.begin.col + } else if loc.line == fp.end.line { + return loc.col <= fp.end.col + } + return false +} + +pub fn (fp &FilePos) str() string { + if fp.begin.line == fp.end.line { + return '${fp.file.filename}:${fp.begin.line + 1}:${fp.begin.col}' + } + return '${fp.file.filename}:${fp.begin.line + 1}:${fp.begin.col}-${fp.end.line + 1}:${fp.end.col}' +} + +pub struct FileLoc { +pub: + pos int + line int + col int +}