From 8ef621e61bbb370bd91d382e6751031fe8ced11a Mon Sep 17 00:00:00 2001 From: Stone_Red <56473591+Stone-Red-Code@users.noreply.github.com> Date: Thu, 5 Mar 2026 18:00:34 +0100 Subject: [PATCH] Upgrade to .NET 10, update packages, enable AOT and cleanup code --- YesNt.CodeEditor/YesNt.CodeEditor.csproj | 6 +- .../YesNt.Interpreter.App.csproj | 4 +- .../StatementRegistryGenerator.cs | 11 +-- .../YesNt.Interpreter.Generator.csproj | 4 +- YesNt.Interpreter.Tests/AddStatementTests.cs | 19 +++-- YesNt.Interpreter.Tests/CodeFlowTests.cs | 1 - .../ConsoleStatementsTests.cs | 4 +- .../FunctionStatementsTests.cs | 1 - .../ProcessingStatementsTests.cs | 1 - .../VariableStatementsTests.cs | 1 - .../YesNt.Interpreter.Tests.csproj | 13 ++-- YesNt.Interpreter/Runtime/ExitMessages.cs | 65 +++++++++++++++--- .../Runtime/RuntimeInformation.cs | 33 ++++----- YesNt.Interpreter/Runtime/YesNtInterpreter.cs | 8 +-- .../Statements/ProcessingStatements.cs | 2 +- YesNt.Interpreter/YesNt.Interpreter.csproj | 44 ++++++++++-- assets/Logo.png | Bin 0 -> 32149 bytes 17 files changed, 146 insertions(+), 71 deletions(-) create mode 100644 assets/Logo.png diff --git a/YesNt.CodeEditor/YesNt.CodeEditor.csproj b/YesNt.CodeEditor/YesNt.CodeEditor.csproj index 5b45dec..3282c31 100644 --- a/YesNt.CodeEditor/YesNt.CodeEditor.csproj +++ b/YesNt.CodeEditor/YesNt.CodeEditor.csproj @@ -2,8 +2,10 @@ Exe - net8.0 + net10.0 AnyCPU;x64 + True + yesntcode @@ -11,7 +13,7 @@ - + diff --git a/YesNt.Interpreter.App/YesNt.Interpreter.App.csproj b/YesNt.Interpreter.App/YesNt.Interpreter.App.csproj index 018aab7..22c4adc 100644 --- a/YesNt.Interpreter.App/YesNt.Interpreter.App.csproj +++ b/YesNt.Interpreter.App/YesNt.Interpreter.App.csproj @@ -1,9 +1,11 @@ - net8.0 + net10.0 Exe AnyCPU;x64 + True + yesnt diff --git a/YesNt.Interpreter.Generator/StatementRegistryGenerator.cs b/YesNt.Interpreter.Generator/StatementRegistryGenerator.cs index 8d296be..242902d 100644 --- a/YesNt.Interpreter.Generator/StatementRegistryGenerator.cs +++ b/YesNt.Interpreter.Generator/StatementRegistryGenerator.cs @@ -8,19 +8,20 @@ using System.Text; namespace YesNt.Interpreter.Generator; [Generator] -public sealed class StatementRegistryGenerator : ISourceGenerator +public sealed class StatementRegistryGenerator : IIncrementalGenerator { private const string StatementAttributeName = "YesNt.Interpreter.Attributes.StatementAttribute"; private const string StaticStatementAttributeName = "YesNt.Interpreter.Attributes.StaticStatementAttribute"; - public void Initialize(GeneratorInitializationContext context) + public void Initialize(IncrementalGeneratorInitializationContext context) { + context.RegisterSourceOutput( + context.CompilationProvider, + Execute); } - public void Execute(GeneratorExecutionContext context) + private static void Execute(SourceProductionContext context, Compilation compilation) { - Compilation compilation = context.Compilation; - List statementMethods = []; List staticStatementMethods = []; diff --git a/YesNt.Interpreter.Generator/YesNt.Interpreter.Generator.csproj b/YesNt.Interpreter.Generator/YesNt.Interpreter.Generator.csproj index 4be3731..8a70f90 100644 --- a/YesNt.Interpreter.Generator/YesNt.Interpreter.Generator.csproj +++ b/YesNt.Interpreter.Generator/YesNt.Interpreter.Generator.csproj @@ -1,6 +1,6 @@ - netstandard2.0 + netstandard2.1 latest enable true @@ -8,6 +8,6 @@ - + diff --git a/YesNt.Interpreter.Tests/AddStatementTests.cs b/YesNt.Interpreter.Tests/AddStatementTests.cs index bbfe7d6..5add554 100644 --- a/YesNt.Interpreter.Tests/AddStatementTests.cs +++ b/YesNt.Interpreter.Tests/AddStatementTests.cs @@ -4,7 +4,6 @@ using System.Collections.Generic; using YesNt.Interpreter.Attributes; using YesNt.Interpreter.Enums; -using YesNt.Interpreter.Runtime; namespace YesNt.Interpreter.Tests; @@ -21,7 +20,7 @@ public class AddStatementTests string? capturedArgs = null; - YesNtAssert.GetLastLineWithSetup(lines, interpreter => + _ = YesNtAssert.GetLastLineWithSetup(lines, interpreter => { interpreter.AddStatement("my_command", SearchMode.StartOfLine, SpaceAround.End, args => { @@ -42,7 +41,7 @@ public class AddStatementTests bool handlerCalled = false; - YesNtAssert.GetLastLineWithSetup(lines, interpreter => + _ = YesNtAssert.GetLastLineWithSetup(lines, interpreter => { interpreter.AddStatement("custom_cmd", SearchMode.StartOfLine, SpaceAround.End, _ => { @@ -63,9 +62,9 @@ public class AddStatementTests bool handlerCalled = false; - YesNtAssert.GetLastLineWithSetup(lines, interpreter => + _ = YesNtAssert.GetLastLineWithSetup(lines, interpreter => { - var attr = new StatementAttribute("attr_cmd", SearchMode.StartOfLine, SpaceAround.End); + StatementAttribute attr = new StatementAttribute("attr_cmd", SearchMode.StartOfLine, SpaceAround.End); interpreter.AddStatement(attr, _ => { handlerCalled = true; @@ -85,7 +84,7 @@ public class AddStatementTests bool handlerCalled = false; - YesNtAssert.GetLastLineWithSetup(lines, interpreter => + _ = YesNtAssert.GetLastLineWithSetup(lines, interpreter => { interpreter.AddStatement("exact_cmd", SearchMode.Exact, SpaceAround.None, _ => { @@ -106,7 +105,7 @@ public class AddStatementTests bool handlerCalled = false; - YesNtAssert.GetLastLineWithSetup(lines, interpreter => + _ = YesNtAssert.GetLastLineWithSetup(lines, interpreter => { interpreter.AddStatement(" ~mark~ ", SearchMode.Contains, SpaceAround.None, _ => { @@ -127,7 +126,7 @@ public class AddStatementTests bool handlerCalled = false; - YesNtAssert.GetLastLineWithSetup(lines, interpreter => + _ = YesNtAssert.GetLastLineWithSetup(lines, interpreter => { interpreter.AddStatement(" !end", SearchMode.EndOfLine, SpaceAround.None, _ => { @@ -148,7 +147,7 @@ public class AddStatementTests string? capturedArgs = null; - YesNtAssert.GetLastLineWithSetup(lines, interpreter => + _ = YesNtAssert.GetLastLineWithSetup(lines, interpreter => { interpreter.AddStatement("capture_cmd", SearchMode.StartOfLine, SpaceAround.End, args => { @@ -279,7 +278,7 @@ public class AddStatementTests int highPriorityOrder = -1; int normalPriorityOrder = -1; - YesNtAssert.GetLastLineWithSetup(lines, interpreter => + _ = YesNtAssert.GetLastLineWithSetup(lines, interpreter => { interpreter.AddStatement( new StatementAttribute("priority_cmd", SearchMode.StartOfLine, SpaceAround.End) { Priority = Priority.High }, diff --git a/YesNt.Interpreter.Tests/CodeFlowTests.cs b/YesNt.Interpreter.Tests/CodeFlowTests.cs index ff52902..663de90 100644 --- a/YesNt.Interpreter.Tests/CodeFlowTests.cs +++ b/YesNt.Interpreter.Tests/CodeFlowTests.cs @@ -217,7 +217,6 @@ public class CodeFlowTests YesNtAssert.IsLastLineEqual(lines, "yes"); } - [TestMethod] public void LabelWithoutColonFailsTest() { diff --git a/YesNt.Interpreter.Tests/ConsoleStatementsTests.cs b/YesNt.Interpreter.Tests/ConsoleStatementsTests.cs index 1f9d6cd..6c9fed9 100644 --- a/YesNt.Interpreter.Tests/ConsoleStatementsTests.cs +++ b/YesNt.Interpreter.Tests/ConsoleStatementsTests.cs @@ -46,7 +46,7 @@ public class ConsoleStatementsTests "clear" ]; - _ = Assert.ThrowsException(() => YesNtAssert.GetLastLine(lines)); + _ = Assert.Throws(() => YesNtAssert.GetLastLine(lines)); } [TestMethod] @@ -80,7 +80,7 @@ public class ConsoleStatementsTests { YesNtInterpreter interpreter = new YesNtInterpreter(); - AutoResetEvent onDone= new AutoResetEvent(false); + AutoResetEvent onDone = new AutoResetEvent(false); StringBuilder output = new StringBuilder(); interpreter.OnDebugOutput += (s) => _ = output.Append(s); diff --git a/YesNt.Interpreter.Tests/FunctionStatementsTests.cs b/YesNt.Interpreter.Tests/FunctionStatementsTests.cs index 134b6e3..65011bf 100644 --- a/YesNt.Interpreter.Tests/FunctionStatementsTests.cs +++ b/YesNt.Interpreter.Tests/FunctionStatementsTests.cs @@ -150,7 +150,6 @@ public class FunctionStatementsTests YesNtAssert.IsLastLineEqual(lines, "outer"); } - [TestMethod] public void ClearCallStackRunsTest() { diff --git a/YesNt.Interpreter.Tests/ProcessingStatementsTests.cs b/YesNt.Interpreter.Tests/ProcessingStatementsTests.cs index c845d2c..d4062a0 100644 --- a/YesNt.Interpreter.Tests/ProcessingStatementsTests.cs +++ b/YesNt.Interpreter.Tests/ProcessingStatementsTests.cs @@ -88,7 +88,6 @@ public class ProcessingStatementsTests YesNtAssert.IsLastLineEqual(lines, "ok"); } - [TestMethod] public void SleepInvalidValueFailsTest() { diff --git a/YesNt.Interpreter.Tests/VariableStatementsTests.cs b/YesNt.Interpreter.Tests/VariableStatementsTests.cs index 9bf890b..5df7d8a 100644 --- a/YesNt.Interpreter.Tests/VariableStatementsTests.cs +++ b/YesNt.Interpreter.Tests/VariableStatementsTests.cs @@ -118,7 +118,6 @@ public class VariableStatementsTests YesNtAssert.IsLastLineEqual(lines, "0"); } - [TestMethod] public void MissingVariableReferenceFailsTest() { diff --git a/YesNt.Interpreter.Tests/YesNt.Interpreter.Tests.csproj b/YesNt.Interpreter.Tests/YesNt.Interpreter.Tests.csproj index 3090b90..592c72d 100644 --- a/YesNt.Interpreter.Tests/YesNt.Interpreter.Tests.csproj +++ b/YesNt.Interpreter.Tests/YesNt.Interpreter.Tests.csproj @@ -1,7 +1,7 @@ - net8.0 + net10.0 enable false @@ -10,10 +10,13 @@ - - - - + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/YesNt.Interpreter/Runtime/ExitMessages.cs b/YesNt.Interpreter/Runtime/ExitMessages.cs index 4d08b09..74b1dea 100644 --- a/YesNt.Interpreter/Runtime/ExitMessages.cs +++ b/YesNt.Interpreter/Runtime/ExitMessages.cs @@ -26,15 +26,58 @@ internal static class ExitMessages internal const string NoInArgumentInStack = "No in argument in stack"; internal const string NoFunctionInStack = "No function in stack"; - internal static string LabelNotFound(string label) => $"Label \"{label}\" not found"; - internal static string FunctionNotFound(string function) => $"Function \"{function}\" not found"; - internal static string VariableNotFound(string variable) => $"Variable \"{variable}\" not found"; - internal static string ListNotFound(string list) => $"List \"{list}\" not found"; - internal static string InvalidIndex(string rawIndex) => $"\"{rawIndex}\" is not a valid index"; - internal static string IndexOutOfRange(int index) => $"Index {index} out of range"; - internal static string InvalidTimeoutValue(string value) => $"\"{value}\" is not a valid time-out value"; - internal static string CouldNotLoadFile(string path) => $"Could not load file \"{path}\""; - internal static string CouldNotFindFile(string path) => $"Could not find file \"{path}\""; - internal static string CannotFindFile(string path) => $"Cannot find file \"{path}\"."; - internal static string FailedToStart(string program, string message) => $"Failed to start \"{program}\". {message}"; + internal static string LabelNotFound(string label) + { + return $"Label \"{label}\" not found"; + } + + internal static string FunctionNotFound(string function) + { + return $"Function \"{function}\" not found"; + } + + internal static string VariableNotFound(string variable) + { + return $"Variable \"{variable}\" not found"; + } + + internal static string ListNotFound(string list) + { + return $"List \"{list}\" not found"; + } + + internal static string InvalidIndex(string rawIndex) + { + return $"\"{rawIndex}\" is not a valid index"; + } + + internal static string IndexOutOfRange(int index) + { + return $"Index {index} out of range"; + } + + internal static string InvalidTimeoutValue(string value) + { + return $"\"{value}\" is not a valid time-out value"; + } + + internal static string CouldNotLoadFile(string path) + { + return $"Could not load file \"{path}\""; + } + + internal static string CouldNotFindFile(string path) + { + return $"Could not find file \"{path}\""; + } + + internal static string CannotFindFile(string path) + { + return $"Cannot find file \"{path}\"."; + } + + internal static string FailedToStart(string program, string message) + { + return $"Failed to start \"{program}\". {message}"; + } } diff --git a/YesNt.Interpreter/Runtime/RuntimeInformation.cs b/YesNt.Interpreter/Runtime/RuntimeInformation.cs index 3216be3..306f40a 100644 --- a/YesNt.Interpreter/Runtime/RuntimeInformation.cs +++ b/YesNt.Interpreter/Runtime/RuntimeInformation.cs @@ -23,9 +23,7 @@ internal sealed class RuntimeInformation private static int internalTaskId = 0; private readonly Dictionary topVariables = []; private readonly Dictionary> topLists = []; - private readonly Dictionary topLabels = []; - private RuntimeInformation parentRuntimeInformation; - private int taskId = 0; + public Dictionary GlobalVariables { get; set; } = []; public Dictionary Functions { get; } = []; public Stack FunctionCallStack { get; } = new(); @@ -41,7 +39,7 @@ internal sealed class RuntimeInformation public bool IsDebugMode { get; set; } = false; public string WorkingDirectory { get; set; } = string.Empty; public bool IsTask => ParentRuntimeInformation is not null; - public int TaskId => IsTask ? taskId : 0; + public int TaskId { get => IsTask ? field : 0; private set; } = 0; public bool InternalIsInFunction { get; set; } public bool IsInFunction @@ -53,18 +51,15 @@ internal sealed class RuntimeInformation public Dictionary Variables => FunctionCallStack.Count == 0 ? topVariables : FunctionCallStack.Peek().Variables; public Dictionary> Lists => FunctionCallStack.Count == 0 ? topLists : FunctionCallStack.Peek().Lists; - public Dictionary Labels => FunctionCallStack.Count == 0 ? topLabels : FunctionCallStack.Peek().Labels; + public Dictionary Labels { get => FunctionCallStack.Count == 0 ? field : FunctionCallStack.Peek().Labels; } = []; public RuntimeInformation ParentRuntimeInformation { - get => parentRuntimeInformation; + get; set { - parentRuntimeInformation = value; - if (parentRuntimeInformation is not null) - { - parentRuntimeInformation.OnExit += ParentRuntimeInformation_OnExit; - } + field = value; + field?.OnExit += ParentRuntimeInformation_OnExit; } } @@ -73,7 +68,7 @@ internal sealed class RuntimeInformation public void WriteLine(string output, bool forceWrite = false) { - if ((Stop && !forceWrite) || (parentRuntimeInformation?.StopAllTasks == true && !forceWrite)) + if ((Stop && !forceWrite) || (ParentRuntimeInformation?.StopAllTasks == true && !forceWrite)) { return; } @@ -82,7 +77,7 @@ internal sealed class RuntimeInformation { if (IsTask) { - parentRuntimeInformation!.WriteLine(output.FromSafeString(), forceWrite); + ParentRuntimeInformation!.WriteLine(output.FromSafeString(), forceWrite); } else { @@ -97,7 +92,7 @@ internal sealed class RuntimeInformation public void Write(string output, bool forceWrite = false) { - if ((Stop && !forceWrite) || (parentRuntimeInformation?.StopAllTasks == true && !forceWrite)) + if ((Stop && !forceWrite) || (ParentRuntimeInformation?.StopAllTasks == true && !forceWrite)) { return; } @@ -106,7 +101,7 @@ internal sealed class RuntimeInformation { if (IsTask) { - parentRuntimeInformation!.Write(output.FromSafeString(), forceWrite); + ParentRuntimeInformation!.Write(output.FromSafeString(), forceWrite); } else { @@ -154,7 +149,7 @@ internal sealed class RuntimeInformation { StopAllTasks = true; OnExit?.Invoke(message, StopAllTasks); - parentRuntimeInformation?.Exit(ExitMessages.TerminatedByChildTask, true); + ParentRuntimeInformation?.Exit(ExitMessages.TerminatedByChildTask, true); } } @@ -162,7 +157,7 @@ internal sealed class RuntimeInformation { if (IsTask) { - parentRuntimeInformation.LineExecuted(debugEventArgs); + ParentRuntimeInformation.LineExecuted(debugEventArgs); } else { @@ -192,10 +187,8 @@ internal sealed class RuntimeInformation IsInFunction = false; IsLocalSearch = false; LineNumber = 0; - taskId = internalTaskId + 1; -#pragma warning disable S2696 // Instance members should not write to "static" fields + TaskId = internalTaskId + 1; internalTaskId++; -#pragma warning restore S2696 // Instance members should not write to "static" fields } private void ParentRuntimeInformation_OnExit(string exitMessage, bool stopAllTasks) diff --git a/YesNt.Interpreter/Runtime/YesNtInterpreter.cs b/YesNt.Interpreter/Runtime/YesNtInterpreter.cs index 6f06dac..e918c78 100644 --- a/YesNt.Interpreter/Runtime/YesNtInterpreter.cs +++ b/YesNt.Interpreter/Runtime/YesNtInterpreter.cs @@ -44,7 +44,7 @@ public class YesNtInterpreter private readonly RuntimeInformation runtimeInfo = new RuntimeInformation(); private Dictionary> statements; private readonly List> staticStatements; - private readonly Dictionary>>> disabledStatements = new(); + private readonly Dictionary>>> disabledStatements = []; /// /// Gets a read-only snapshot of all currently registered statements. @@ -138,10 +138,10 @@ public class YesNtInterpreter { foreach (StatementAttribute key in statements.Keys.Where(k => k.Name == name).ToList()) { - statements.Remove(key); + _ = statements.Remove(key); } - disabledStatements.Remove(name); + _ = disabledStatements.Remove(name); } /// @@ -191,7 +191,7 @@ public class YesNtInterpreter statements[kv.Key] = kv.Value; } - disabledStatements.Remove(name); + _ = disabledStatements.Remove(name); } /// diff --git a/YesNt.Interpreter/Statements/ProcessingStatements.cs b/YesNt.Interpreter/Statements/ProcessingStatements.cs index 3cfd3d9..010389d 100644 --- a/YesNt.Interpreter/Statements/ProcessingStatements.cs +++ b/YesNt.Interpreter/Statements/ProcessingStatements.cs @@ -50,7 +50,7 @@ internal partial class ProcessingStatements : StatementRuntimeInformation _ = Task.Run(() => { YesNtInterpreter interpreter = new YesNtInterpreter(); - interpreter.Execute(lines, RuntimeInfo.GlobalVariables, lineNumber, RuntimeInfo); + interpreter.Execute(lines, RuntimeInfo.GlobalVariables, lineNumber, RuntimeInfo); }); RuntimeInfo.CurrentLine = string.Empty; diff --git a/YesNt.Interpreter/YesNt.Interpreter.csproj b/YesNt.Interpreter/YesNt.Interpreter.csproj index 67e7926..a396e7d 100644 --- a/YesNt.Interpreter/YesNt.Interpreter.csproj +++ b/YesNt.Interpreter/YesNt.Interpreter.csproj @@ -1,18 +1,54 @@ - net8.0 + net10.0 YesNt.Interpreter Library AnyCPU;x64 + True + README.md + https://github.com/Stone-Red-Code/YesNt-Interpreter/ + scripting, modding, language + Logo.png + True + LICENSE + + + + True + + + + True + + + + True + + + + True - + + True + \ + + + True + \ + + + True + \ + + + + + diff --git a/assets/Logo.png b/assets/Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..1ae3f414aaf5f56d23416af184855b948d508049 GIT binary patch literal 32149 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 literal 0 HcmV?d00001