From 8dfdad3f34ef717cff3074d807106c8a647afc02 Mon Sep 17 00:00:00 2001 From: Devin Bidwell Date: Mon, 29 Dec 2025 12:29:01 -0700 Subject: [PATCH] Added support for CRLF windows line endings --- Changelog.md | 4 ++++ ModData/About/About.xml | 2 +- csharp_mod/Plugin.cs | 2 +- rust_compiler/Cargo.lock | 2 +- rust_compiler/Cargo.toml | 2 +- rust_compiler/libs/tokenizer/src/token.rs | 19 ++++++++++++++++++- 6 files changed, 26 insertions(+), 5 deletions(-) diff --git a/Changelog.md b/Changelog.md index 90a5575..681bb50 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,9 @@ # Changelog +[0.4.7] + +- Added support for Windows CRLF endings + [0.4.6] - Fixed bug in compiler where you were unable to assign a `const` value to diff --git a/ModData/About/About.xml b/ModData/About/About.xml index 7e6b73a..ad84f68 100644 --- a/ModData/About/About.xml +++ b/ModData/About/About.xml @@ -2,7 +2,7 @@ Slang JoeDiertay - 0.4.6 + 0.4.7 [h1]Slang: High-Level Programming for Stationeers[/h1] diff --git a/csharp_mod/Plugin.cs b/csharp_mod/Plugin.cs index 8893012..17ac98d 100644 --- a/csharp_mod/Plugin.cs +++ b/csharp_mod/Plugin.cs @@ -39,7 +39,7 @@ namespace Slang { public const string PluginGuid = "com.biddydev.slang"; public const string PluginName = "Slang"; - public const string PluginVersion = "0.4.6"; + public const string PluginVersion = "0.4.7"; private static Harmony? _harmony; diff --git a/rust_compiler/Cargo.lock b/rust_compiler/Cargo.lock index 6cf03a8..bc28d3e 100644 --- a/rust_compiler/Cargo.lock +++ b/rust_compiler/Cargo.lock @@ -930,7 +930,7 @@ checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" [[package]] name = "slang" -version = "0.4.6" +version = "0.4.7" dependencies = [ "anyhow", "clap", diff --git a/rust_compiler/Cargo.toml b/rust_compiler/Cargo.toml index e529722..e880ddf 100644 --- a/rust_compiler/Cargo.toml +++ b/rust_compiler/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "slang" -version = "0.4.6" +version = "0.4.7" edition = "2021" [workspace] diff --git a/rust_compiler/libs/tokenizer/src/token.rs b/rust_compiler/libs/tokenizer/src/token.rs index d6d8c42..8ca6e21 100644 --- a/rust_compiler/libs/tokenizer/src/token.rs +++ b/rust_compiler/libs/tokenizer/src/token.rs @@ -115,7 +115,7 @@ macro_rules! keyword { } #[derive(Debug, PartialEq, Hash, Eq, Clone, Logos)] -#[logos(skip r"[ \t\f]+")] +#[logos(skip r"[ \r\t\f]+")] #[logos(extras = Extras)] #[logos(error(LexError, LexError::from_lexer))] pub enum TokenType<'a> { @@ -843,3 +843,20 @@ documented! { } } +#[cfg(test)] +mod tests { + use super::TokenType; + use logos::Logos; + + #[test] + fn test_windows_crlf_endings() -> anyhow::Result<()> { + let src = "let i = 0;\r\n"; + + let lexer = TokenType::lexer(src); + + let tokens = lexer.collect::>(); + + assert!(!tokens.iter().any(|res| res.is_err())); + Ok(()) + } +}