Akeit0 6 months ago
parent
commit
b4b9c29c6e
28 changed files with 119 additions and 105 deletions
  1. 13 13
      src/Lua.SourceGenerator/SymbolReferences.cs
  2. 1 1
      src/Lua/CodeAnalysis/SourcePosition.cs
  3. 9 0
      src/Lua/CodeAnalysis/Syntax/DisplayStringSyntaxVisitor.cs
  4. 7 2
      src/Lua/CodeAnalysis/Syntax/Lexer.cs
  5. 3 10
      src/Lua/CodeAnalysis/Syntax/LuaSyntaxTree.cs
  6. 1 1
      src/Lua/CodeAnalysis/Syntax/Nodes/FunctionDeclarationExpressionNode.cs
  7. 1 1
      src/Lua/CodeAnalysis/Syntax/Nodes/FunctionDeclarationStatementNode.cs
  8. 1 1
      src/Lua/CodeAnalysis/Syntax/Nodes/LocalFunctionDeclarationNode.cs
  9. 1 1
      src/Lua/CodeAnalysis/Syntax/Nodes/NumericForStatementNode.cs
  10. 3 0
      src/Lua/CodeAnalysis/Syntax/Nodes/TableConstructorExpressionNode.cs
  11. 1 1
      src/Lua/CodeAnalysis/Syntax/Nodes/TableMethodDeclarationStatementNode.cs
  12. 1 1
      src/Lua/CodeAnalysis/Syntax/OperatorPrecedence.cs
  13. 5 14
      src/Lua/CodeAnalysis/Syntax/Parser.cs
  14. 38 29
      src/Lua/CodeAnalysis/Syntax/SyntaxToken.cs
  15. 1 1
      src/Lua/CodeAnalysis/Syntax/SyntaxTokenEnumerator.cs
  16. 1 1
      src/Lua/Exceptions.cs
  17. 1 0
      src/Lua/IO/LuaFileBufferingMode.cs
  18. 1 1
      src/Lua/Internal/CompilerServices/StateMachineRunner.cs
  19. 1 0
      src/Lua/Internal/PooledArray.cs
  20. 3 3
      src/Lua/Internal/PooledList.cs
  21. 1 1
      src/Lua/Internal/ValueTaskEx.cs
  22. 1 1
      src/Lua/LuaCoroutine.cs
  23. 1 1
      src/Lua/LuaFunctionExecutionContext.cs
  24. 1 1
      src/Lua/Runtime/LuaThreadAccess.cs
  25. 2 0
      src/Lua/Runtime/LuaVirtualMachine.Debug.cs
  26. 17 17
      src/Lua/Standard/DebugLibrary.cs
  27. 2 2
      src/Lua/Standard/StringLibrary.cs
  28. 1 1
      tests/Lua.Tests/PatternMatchingTests.cs

+ 13 - 13
src/Lua.SourceGenerator/SymbolReferences.cs

@@ -26,17 +26,17 @@ public sealed class SymbolReferences
         };
         };
     }
     }
 
 
-    public INamedTypeSymbol LuaObjectAttribute { get; private set; } = default!;
-    public INamedTypeSymbol LuaMemberAttribute { get; private set; } = default!;
-    public INamedTypeSymbol LuaIgnoreMemberAttribute { get; private set; } = default!;
-    public INamedTypeSymbol LuaMetamethodAttribute { get; private set; } = default!;
-    public INamedTypeSymbol LuaValue { get; private set; } = default!;
-    public INamedTypeSymbol Boolean { get; private set; } = default!;
-    public INamedTypeSymbol String { get; private set; } = default!;
-    public INamedTypeSymbol Double { get; private set; } = default!;
-    public INamedTypeSymbol LuaFunction { get; private set; } = default!;
-    public INamedTypeSymbol LuaThread { get; private set; } = default!;
-    public INamedTypeSymbol LuaTable { get; private set; } = default!;
-    public INamedTypeSymbol LuaUserData { get; private set; } = default!;
-    public INamedTypeSymbol CancellationToken { get; private set; } = default!;
+    public INamedTypeSymbol LuaObjectAttribute { get; private set; } = null!;
+    public INamedTypeSymbol LuaMemberAttribute { get; private set; } = null!;
+    public INamedTypeSymbol LuaIgnoreMemberAttribute { get; private set; } = null!;
+    public INamedTypeSymbol LuaMetamethodAttribute { get; private set; } = null!;
+    public INamedTypeSymbol LuaValue { get; private set; } = null!;
+    public INamedTypeSymbol Boolean { get; private set; } = null!;
+    public INamedTypeSymbol String { get; private set; } = null!;
+    public INamedTypeSymbol Double { get; private set; } = null!;
+    public INamedTypeSymbol LuaFunction { get; private set; } = null!;
+    public INamedTypeSymbol LuaThread { get; private set; } = null!;
+    public INamedTypeSymbol LuaTable { get; private set; } = null!;
+    public INamedTypeSymbol LuaUserData { get; private set; } = null!;
+    public INamedTypeSymbol CancellationToken { get; private set; } = null!;
 }
 }

+ 1 - 1
src/Lua/CodeAnalysis/SourcePosition.cs

@@ -11,4 +11,4 @@ public record struct SourcePosition
     public int Line { get; set; }
     public int Line { get; set; }
     public int Column { get; set; }
     public int Column { get; set; }
     public override readonly string ToString() => $"({Line},{Column})";
     public override readonly string ToString() => $"({Line},{Column})";
-}
+}

+ 9 - 0
src/Lua/CodeAnalysis/Syntax/DisplayStringSyntaxVisitor.cs

@@ -36,6 +36,7 @@ public sealed class DisplayStringSyntaxVisitor : ISyntaxNodeVisitor<DisplayStrin
                 buffer.Append(' ', indentLevel * 4);
                 buffer.Append(' ', indentLevel * 4);
                 isNewLine = false;
                 isNewLine = false;
             }
             }
+
             buffer.Append(value);
             buffer.Append(value);
         }
         }
 
 
@@ -133,6 +134,7 @@ public sealed class DisplayStringSyntaxVisitor : ISyntaxNodeVisitor<DisplayStrin
                 context.AppendLine();
                 context.AppendLine();
             }
             }
         }
         }
+
         context.AppendLine("end");
         context.AppendLine("end");
 
 
         return true;
         return true;
@@ -147,6 +149,7 @@ public sealed class DisplayStringSyntaxVisitor : ISyntaxNodeVisitor<DisplayStrin
             if (node.ParameterNodes.Length > 0) context.Append(", ");
             if (node.ParameterNodes.Length > 0) context.Append(", ");
             context.Append("...");
             context.Append("...");
         }
         }
+
         context.AppendLine(")");
         context.AppendLine(")");
 
 
         using (context.BeginIndentScope())
         using (context.BeginIndentScope())
@@ -174,6 +177,7 @@ public sealed class DisplayStringSyntaxVisitor : ISyntaxNodeVisitor<DisplayStrin
             if (node.ParameterNodes.Length > 0) context.Append(", ");
             if (node.ParameterNodes.Length > 0) context.Append(", ");
             context.Append("...");
             context.Append("...");
         }
         }
+
         context.AppendLine(")");
         context.AppendLine(")");
 
 
         using (context.BeginIndentScope())
         using (context.BeginIndentScope())
@@ -215,6 +219,7 @@ public sealed class DisplayStringSyntaxVisitor : ISyntaxNodeVisitor<DisplayStrin
             if (node.ParameterNodes.Length > 0) context.Append(", ");
             if (node.ParameterNodes.Length > 0) context.Append(", ");
             context.Append("...");
             context.Append("...");
         }
         }
+
         context.AppendLine(")");
         context.AppendLine(")");
 
 
         using (context.BeginIndentScope())
         using (context.BeginIndentScope())
@@ -246,6 +251,7 @@ public sealed class DisplayStringSyntaxVisitor : ISyntaxNodeVisitor<DisplayStrin
                 context.AppendLine();
                 context.AppendLine();
             }
             }
         }
         }
+
         context.AppendLine("end");
         context.AppendLine("end");
 
 
         return true;
         return true;
@@ -371,6 +377,7 @@ public sealed class DisplayStringSyntaxVisitor : ISyntaxNodeVisitor<DisplayStrin
                 context.AppendLine();
                 context.AppendLine();
             }
             }
         }
         }
+
         context.AppendLine("end");
         context.AppendLine("end");
 
 
         return true;
         return true;
@@ -423,6 +430,7 @@ public sealed class DisplayStringSyntaxVisitor : ISyntaxNodeVisitor<DisplayStrin
             context.Append(node.Text.ToString());
             context.Append(node.Text.ToString());
             context.Append("]]");
             context.Append("]]");
         }
         }
+
         return true;
         return true;
     }
     }
 
 
@@ -466,6 +474,7 @@ public sealed class DisplayStringSyntaxVisitor : ISyntaxNodeVisitor<DisplayStrin
                 context.AppendLine(i == node.Fields.Length - 1 ? "" : ",");
                 context.AppendLine(i == node.Fields.Length - 1 ? "" : ",");
             }
             }
         }
         }
+
         context.AppendLine("}");
         context.AppendLine("}");
 
 
         return true;
         return true;

+ 7 - 2
src/Lua/CodeAnalysis/Syntax/Lexer.cs

@@ -150,6 +150,7 @@ public ref struct Lexer
                 {
                 {
                     current = SyntaxToken.Assignment(position);
                     current = SyntaxToken.Assignment(position);
                 }
                 }
+
                 return true;
                 return true;
             case '~':
             case '~':
                 if (c2 == '=')
                 if (c2 == '=')
@@ -161,6 +162,7 @@ public ref struct Lexer
                 {
                 {
                     throw new LuaParseException(ChunkName, position, $"error: Invalid '~' token");
                     throw new LuaParseException(ChunkName, position, $"error: Invalid '~' token");
                 }
                 }
+
                 return true;
                 return true;
             case '>':
             case '>':
                 if (c2 == '=')
                 if (c2 == '=')
@@ -172,6 +174,7 @@ public ref struct Lexer
                 {
                 {
                     current = SyntaxToken.GreaterThan(position);
                     current = SyntaxToken.GreaterThan(position);
                 }
                 }
+
                 return true;
                 return true;
             case '<':
             case '<':
                 if (c2 == '=')
                 if (c2 == '=')
@@ -183,6 +186,7 @@ public ref struct Lexer
                 {
                 {
                     current = SyntaxToken.LessThan(position);
                     current = SyntaxToken.LessThan(position);
                 }
                 }
+
                 return true;
                 return true;
             case '.':
             case '.':
                 if (c2 == '.')
                 if (c2 == '.')
@@ -328,8 +332,8 @@ public ref struct Lexer
                     if (span.Length <= offset) break;
                     if (span.Length <= offset) break;
                     if (span[offset] == '\r')
                     if (span[offset] == '\r')
                     {
                     {
-                        if (span.Length<=offset +1) continue;
-                        if (span[offset+1] == '\n')Advance(1);
+                        if (span.Length <= offset + 1) continue;
+                        if (span[offset + 1] == '\n') Advance(1);
                     }
                     }
                 }
                 }
                 else if (c == quote)
                 else if (c == quote)
@@ -439,6 +443,7 @@ public ref struct Lexer
                     Advance(1);
                     Advance(1);
                     readCount++;
                     readCount++;
                 }
                 }
+
                 flag = false;
                 flag = false;
             }
             }
 
 

+ 3 - 10
src/Lua/CodeAnalysis/Syntax/LuaSyntaxTree.cs

@@ -1,6 +1,6 @@
 namespace Lua.CodeAnalysis.Syntax;
 namespace Lua.CodeAnalysis.Syntax;
 
 
-public record LuaSyntaxTree(SyntaxNode[] Nodes,SourcePosition Position) : SyntaxNode(Position)
+public record LuaSyntaxTree(SyntaxNode[] Nodes, SourcePosition Position) : SyntaxNode(Position)
 {
 {
     public override TResult Accept<TContext, TResult>(ISyntaxNodeVisitor<TContext, TResult> visitor, TContext context)
     public override TResult Accept<TContext, TResult>(ISyntaxNodeVisitor<TContext, TResult> visitor, TContext context)
     {
     {
@@ -9,16 +9,9 @@ public record LuaSyntaxTree(SyntaxNode[] Nodes,SourcePosition Position) : Syntax
 
 
     public static LuaSyntaxTree Parse(string source, string? chunkName = null)
     public static LuaSyntaxTree Parse(string source, string? chunkName = null)
     {
     {
-        var lexer = new Lexer
-        {
-            Source = source.AsMemory(),
-            ChunkName = chunkName,
-        };
+        var lexer = new Lexer { Source = source.AsMemory(), ChunkName = chunkName, };
 
 
-        var parser = new Parser
-        {
-            ChunkName = chunkName
-        };
+        var parser = new Parser { ChunkName = chunkName };
 
 
         while (lexer.MoveNext())
         while (lexer.MoveNext())
         {
         {

+ 1 - 1
src/Lua/CodeAnalysis/Syntax/Nodes/FunctionDeclarationExpressionNode.cs

@@ -1,6 +1,6 @@
 namespace Lua.CodeAnalysis.Syntax.Nodes;
 namespace Lua.CodeAnalysis.Syntax.Nodes;
 
 
-public record FunctionDeclarationExpressionNode(IdentifierNode[] ParameterNodes, SyntaxNode[] Nodes, bool HasVariableArguments, SourcePosition Position, int LineDefined,SourcePosition EndPosition) : ExpressionNode(Position)
+public record FunctionDeclarationExpressionNode(IdentifierNode[] ParameterNodes, SyntaxNode[] Nodes, bool HasVariableArguments, SourcePosition Position, int LineDefined, SourcePosition EndPosition) : ExpressionNode(Position)
 {
 {
     public override TResult Accept<TContext, TResult>(ISyntaxNodeVisitor<TContext, TResult> visitor, TContext context)
     public override TResult Accept<TContext, TResult>(ISyntaxNodeVisitor<TContext, TResult> visitor, TContext context)
     {
     {

+ 1 - 1
src/Lua/CodeAnalysis/Syntax/Nodes/FunctionDeclarationStatementNode.cs

@@ -1,6 +1,6 @@
 namespace Lua.CodeAnalysis.Syntax.Nodes;
 namespace Lua.CodeAnalysis.Syntax.Nodes;
 
 
-public record FunctionDeclarationStatementNode(ReadOnlyMemory<char> Name, IdentifierNode[] ParameterNodes, SyntaxNode[] Nodes, bool HasVariableArguments, SourcePosition Position,int LineDefined,SourcePosition EndPosition) : StatementNode(Position)
+public record FunctionDeclarationStatementNode(ReadOnlyMemory<char> Name, IdentifierNode[] ParameterNodes, SyntaxNode[] Nodes, bool HasVariableArguments, SourcePosition Position, int LineDefined, SourcePosition EndPosition) : StatementNode(Position)
 {
 {
     public override TResult Accept<TContext, TResult>(ISyntaxNodeVisitor<TContext, TResult> visitor, TContext context)
     public override TResult Accept<TContext, TResult>(ISyntaxNodeVisitor<TContext, TResult> visitor, TContext context)
     {
     {

+ 1 - 1
src/Lua/CodeAnalysis/Syntax/Nodes/LocalFunctionDeclarationNode.cs

@@ -1,6 +1,6 @@
 namespace Lua.CodeAnalysis.Syntax.Nodes;
 namespace Lua.CodeAnalysis.Syntax.Nodes;
 
 
-public record LocalFunctionDeclarationStatementNode(ReadOnlyMemory<char> Name, IdentifierNode[] ParameterNodes, SyntaxNode[] Nodes, bool HasVariableArguments, SourcePosition Position, int LineDefined,SourcePosition EndPosition) : FunctionDeclarationStatementNode(Name, ParameterNodes, Nodes, HasVariableArguments, Position, LineDefined, EndPosition)
+public record LocalFunctionDeclarationStatementNode(ReadOnlyMemory<char> Name, IdentifierNode[] ParameterNodes, SyntaxNode[] Nodes, bool HasVariableArguments, SourcePosition Position, int LineDefined, SourcePosition EndPosition) : FunctionDeclarationStatementNode(Name, ParameterNodes, Nodes, HasVariableArguments, Position, LineDefined, EndPosition)
 {
 {
     public override TResult Accept<TContext, TResult>(ISyntaxNodeVisitor<TContext, TResult> visitor, TContext context)
     public override TResult Accept<TContext, TResult>(ISyntaxNodeVisitor<TContext, TResult> visitor, TContext context)
     {
     {

+ 1 - 1
src/Lua/CodeAnalysis/Syntax/Nodes/NumericForStatementNode.cs

@@ -1,6 +1,6 @@
 namespace Lua.CodeAnalysis.Syntax.Nodes;
 namespace Lua.CodeAnalysis.Syntax.Nodes;
 
 
-public record NumericForStatementNode(ReadOnlyMemory<char> VariableName, ExpressionNode InitNode, ExpressionNode LimitNode, ExpressionNode? StepNode, StatementNode[] StatementNodes, SourcePosition Position,SourcePosition DoPosition) : StatementNode(Position)
+public record NumericForStatementNode(ReadOnlyMemory<char> VariableName, ExpressionNode InitNode, ExpressionNode LimitNode, ExpressionNode? StepNode, StatementNode[] StatementNodes, SourcePosition Position, SourcePosition DoPosition) : StatementNode(Position)
 {
 {
     public override TResult Accept<TContext, TResult>(ISyntaxNodeVisitor<TContext, TResult> visitor, TContext context)
     public override TResult Accept<TContext, TResult>(ISyntaxNodeVisitor<TContext, TResult> visitor, TContext context)
     {
     {

+ 3 - 0
src/Lua/CodeAnalysis/Syntax/Nodes/TableConstructorExpressionNode.cs

@@ -9,6 +9,9 @@ public record TableConstructorExpressionNode(TableConstructorField[] Fields, Sou
 }
 }
 
 
 public abstract record TableConstructorField(SourcePosition Position);
 public abstract record TableConstructorField(SourcePosition Position);
+
 public record GeneralTableConstructorField(ExpressionNode KeyExpression, ExpressionNode ValueExpression, SourcePosition Position) : TableConstructorField(Position);
 public record GeneralTableConstructorField(ExpressionNode KeyExpression, ExpressionNode ValueExpression, SourcePosition Position) : TableConstructorField(Position);
+
 public record RecordTableConstructorField(string Key, ExpressionNode ValueExpression, SourcePosition Position) : TableConstructorField(Position);
 public record RecordTableConstructorField(string Key, ExpressionNode ValueExpression, SourcePosition Position) : TableConstructorField(Position);
+
 public record ListTableConstructorField(ExpressionNode Expression, SourcePosition Position) : TableConstructorField(Position);
 public record ListTableConstructorField(ExpressionNode Expression, SourcePosition Position) : TableConstructorField(Position);

+ 1 - 1
src/Lua/CodeAnalysis/Syntax/Nodes/TableMethodDeclarationStatementNode.cs

@@ -1,6 +1,6 @@
 namespace Lua.CodeAnalysis.Syntax.Nodes;
 namespace Lua.CodeAnalysis.Syntax.Nodes;
 
 
-public record TableMethodDeclarationStatementNode(IdentifierNode[] MemberPath, IdentifierNode[] ParameterNodes, StatementNode[] Nodes, bool HasVariableArguments, bool HasSelfParameter, SourcePosition Position, int LineDefined,SourcePosition EndPosition) : StatementNode(Position)
+public record TableMethodDeclarationStatementNode(IdentifierNode[] MemberPath, IdentifierNode[] ParameterNodes, StatementNode[] Nodes, bool HasVariableArguments, bool HasSelfParameter, SourcePosition Position, int LineDefined, SourcePosition EndPosition) : StatementNode(Position)
 {
 {
     public override TResult Accept<TContext, TResult>(ISyntaxNodeVisitor<TContext, TResult> visitor, TContext context)
     public override TResult Accept<TContext, TResult>(ISyntaxNodeVisitor<TContext, TResult> visitor, TContext context)
     {
     {

+ 1 - 1
src/Lua/CodeAnalysis/Syntax/OperatorPrecedence.cs

@@ -46,4 +46,4 @@ public enum OperatorPrecedence
     /// Exponentiation (^)
     /// Exponentiation (^)
     /// </summary>
     /// </summary>
     Exponentiation,
     Exponentiation,
-}
+}

+ 5 - 14
src/Lua/CodeAnalysis/Syntax/Parser.cs

@@ -33,9 +33,10 @@ public ref struct Parser
             var node = ParseStatement(ref enumerator);
             var node = ParseStatement(ref enumerator);
             root.Add(node);
             root.Add(node);
         }
         }
+
         var tokensSpan = tokens.AsSpan();
         var tokensSpan = tokens.AsSpan();
         var lastToken = tokensSpan[0];
         var lastToken = tokensSpan[0];
-        for (int i = tokensSpan.Length-1; 0<i;i--)
+        for (int i = tokensSpan.Length - 1; 0 < i; i--)
         {
         {
             var t = tokensSpan[i];
             var t = tokensSpan[i];
             if (t.Type is not SyntaxTokenType.EndOfLine)
             if (t.Type is not SyntaxTokenType.EndOfLine)
@@ -45,7 +46,7 @@ public ref struct Parser
             }
             }
         }
         }
 
 
-        var tree = new LuaSyntaxTree(root.AsSpan().ToArray(),lastToken.Position);
+        var tree = new LuaSyntaxTree(root.AsSpan().ToArray(), lastToken.Position);
         Dispose();
         Dispose();
 
 
         return tree;
         return tree;
@@ -293,21 +294,11 @@ public ref struct Parser
                 switch (state)
                 switch (state)
                 {
                 {
                     case 0:
                     case 0:
-                        ifNodes = new()
-                        {
-                            Position = thenToken.Position,
-                            ConditionNode = condition,
-                            ThenNodes = builder.AsSpan().ToArray(),
-                        };
+                        ifNodes = new() { Position = thenToken.Position, ConditionNode = condition, ThenNodes = builder.AsSpan().ToArray(), };
                         builder.Clear();
                         builder.Clear();
                         break;
                         break;
                     case 1:
                     case 1:
-                        elseIfBuilder.Add(new()
-                        {
-                            Position = thenToken.Position,
-                            ConditionNode = condition,
-                            ThenNodes = builder.AsSpan().ToArray(),
-                        });
+                        elseIfBuilder.Add(new() { Position = thenToken.Position, ConditionNode = condition, ThenNodes = builder.AsSpan().ToArray(), });
                         builder.Clear();
                         builder.Clear();
                         break;
                         break;
                     case 2:
                     case 2:

+ 38 - 29
src/Lua/CodeAnalysis/Syntax/SyntaxToken.cs

@@ -172,8 +172,8 @@ public readonly struct SyntaxToken(SyntaxTokenType type, ReadOnlyMemory<char> te
     public bool Equals(SyntaxToken other)
     public bool Equals(SyntaxToken other)
     {
     {
         return other.Type == Type &&
         return other.Type == Type &&
-            other.Text.Span.SequenceEqual(Text.Span) &&
-            other.Position == Position;
+               other.Text.Span.SequenceEqual(Text.Span) &&
+               other.Position == Position;
     }
     }
 
 
     public override bool Equals(object? obj)
     public override bool Equals(object? obj)
@@ -214,6 +214,7 @@ public enum SyntaxTokenType
     /// Left parenthesis '('
     /// Left parenthesis '('
     /// </summary>
     /// </summary>
     LParen,
     LParen,
+
     /// <summary>
     /// <summary>
     /// Right parenthesis ')'
     /// Right parenthesis ')'
     /// </summary>
     /// </summary>
@@ -223,6 +224,7 @@ public enum SyntaxTokenType
     /// Left curly bracket '{'
     /// Left curly bracket '{'
     /// </summary>
     /// </summary>
     LCurly,
     LCurly,
+
     /// <summary>
     /// <summary>
     /// Right curly bracket '}'
     /// Right curly bracket '}'
     /// </summary>
     /// </summary>
@@ -232,6 +234,7 @@ public enum SyntaxTokenType
     /// Left square bracket '['
     /// Left square bracket '['
     /// </summary>
     /// </summary>
     LSquare,
     LSquare,
+
     /// <summary>
     /// <summary>
     /// Right square bracket ']'
     /// Right square bracket ']'
     /// </summary>
     /// </summary>
@@ -281,6 +284,7 @@ public enum SyntaxTokenType
     /// Boolean literal (true)
     /// Boolean literal (true)
     /// </summary>
     /// </summary>
     True,
     True,
+
     /// <summary>
     /// <summary>
     /// Boolean literal (false)
     /// Boolean literal (false)
     /// </summary>
     /// </summary>
@@ -300,65 +304,70 @@ public enum SyntaxTokenType
     /// Addition operator (+)
     /// Addition operator (+)
     /// </summary>
     /// </summary>
     Addition,
     Addition,
+
     /// <summary>
     /// <summary>
     /// Subtraction operator (-)
     /// Subtraction operator (-)
     /// </summary>
     /// </summary>
     Subtraction,
     Subtraction,
+
     /// <summary>
     /// <summary>
     /// Multiplication operator (*)
     /// Multiplication operator (*)
     /// </summary>
     /// </summary>
     Multiplication,
     Multiplication,
+
     /// <summary>
     /// <summary>
     /// Division operator (/)
     /// Division operator (/)
     /// </summary>
     /// </summary>
     Division,
     Division,
+
     /// <summary>
     /// <summary>
     /// Modulo operator (%)
     /// Modulo operator (%)
     /// </summary>
     /// </summary>
     Modulo,
     Modulo,
+
     /// <summary>
     /// <summary>
     /// Exponentiation operator (^)
     /// Exponentiation operator (^)
     /// </summary>
     /// </summary>
     Exponentiation,
     Exponentiation,
 
 
-    Equality,          // ==
-    Inequality,       // ~=
-    GreaterThan,        // >
-    LessThan,           // <
+    Equality, // ==
+    Inequality, // ~=
+    GreaterThan, // >
+    LessThan, // <
     GreaterThanOrEqual, // >=
     GreaterThanOrEqual, // >=
-    LessThanOrEqual,    // <=
+    LessThanOrEqual, // <=
 
 
-    And,            // and
-    Not,            // not
-    Or,             // or
+    And, // and
+    Not, // not
+    Or, // or
 
 
     /// <summary>
     /// <summary>
     /// Assignment operator (=)
     /// Assignment operator (=)
     /// </summary>
     /// </summary>
     Assignment,
     Assignment,
 
 
-    Concat,         // ..
-    Length,         // #
+    Concat, // ..
+    Length, // #
 
 
-    VarArg,         // ...
+    VarArg, // ...
 
 
-    Break,          // break
-    Do,             // do
-    For,            // for
-    Goto,           // goto
+    Break, // break
+    Do, // do
+    For, // for
+    Goto, // goto
 
 
-    If,             // if
-    ElseIf,         // elseif
-    Else,           // else
-    Function,       // function
+    If, // if
+    ElseIf, // elseif
+    Else, // else
+    Function, // function
 
 
-    End,            // end
-    Then,           // then
+    End, // end
+    Then, // then
 
 
-    In,             // in
-    Local,          // local
-    Repeat,         // repeat
-    Return,         // return
-    Until,          // until
-    While,          // while
+    In, // in
+    Local, // local
+    Repeat, // repeat
+    Return, // return
+    Until, // until
+    While, // while
 }
 }

+ 1 - 1
src/Lua/CodeAnalysis/Syntax/SyntaxTokenEnumerator.cs

@@ -57,4 +57,4 @@ public ref struct SyntaxTokenEnumerator(ReadOnlySpan<SyntaxToken> source)
 
 
         return default;
         return default;
     }
     }
-}
+}

+ 1 - 1
src/Lua/Exceptions.cs

@@ -72,7 +72,7 @@ internal class LuaStackOverflowException() : Exception("stack overflow")
 {
 {
     public override string ToString()
     public override string ToString()
     {
     {
-        return  "stack overflow";
+        return "stack overflow";
     }
     }
 }
 }
 
 

+ 1 - 0
src/Lua/IO/LuaFileBufferingMode.cs

@@ -11,6 +11,7 @@ public enum LuaFileBufferingMode
     /// Line buffering `line` in Lua
     /// Line buffering `line` in Lua
     /// </summary>
     /// </summary>
     LineBuffering,
     LineBuffering,
+
     /// <summary>
     /// <summary>
     /// No buffering. `no` in Lua
     /// No buffering. `no` in Lua
     /// </summary>
     /// </summary>

+ 1 - 1
src/Lua/Internal/CompilerServices/StateMachineRunner.cs

@@ -30,11 +30,11 @@ SOFTWARE.
 using System.Diagnostics;
 using System.Diagnostics;
 using System.Runtime.CompilerServices;
 using System.Runtime.CompilerServices;
 using System.Threading.Tasks.Sources;
 using System.Threading.Tasks.Sources;
+
 // ReSharper disable ArrangeTypeMemberModifiers
 // ReSharper disable ArrangeTypeMemberModifiers
 
 
 namespace Lua.Internal.CompilerServices
 namespace Lua.Internal.CompilerServices
 {
 {
-
     internal interface IStateMachineRunnerPromise : IValueTaskSource
     internal interface IStateMachineRunnerPromise : IValueTaskSource
     {
     {
         Action MoveNext { get; }
         Action MoveNext { get; }

+ 1 - 0
src/Lua/Internal/PooledArray.cs

@@ -15,6 +15,7 @@ public struct PooledArray<T>(int sizeHint) : IDisposable
             return ref array![index];
             return ref array![index];
         }
         }
     }
     }
+
     public T[] UnderlyingArray
     public T[] UnderlyingArray
     {
     {
         get
         get

+ 3 - 3
src/Lua/Internal/PooledList.cs

@@ -3,7 +3,7 @@ using System.Runtime.CompilerServices;
 
 
 namespace Lua.Internal;
 namespace Lua.Internal;
 
 
-internal  struct PooledList<T> :IDisposable
+internal struct PooledList<T> : IDisposable
 {
 {
     T[]? buffer;
     T[]? buffer;
     int tail;
     int tail;
@@ -62,7 +62,7 @@ internal  struct PooledList<T> :IDisposable
         items.CopyTo(buffer.AsSpan()[tail..]);
         items.CopyTo(buffer.AsSpan()[tail..]);
         tail += items.Length;
         tail += items.Length;
     }
     }
-    
+
     public void PopUntil(int count)
     public void PopUntil(int count)
     {
     {
         ThrowIfDisposed();
         ThrowIfDisposed();
@@ -71,7 +71,7 @@ internal  struct PooledList<T> :IDisposable
 
 
         tail = count;
         tail = count;
     }
     }
-    
+
     public void Pop(int count)
     public void Pop(int count)
     {
     {
         ThrowIfDisposed();
         ThrowIfDisposed();

+ 1 - 1
src/Lua/Internal/ValueTaskEx.cs

@@ -44,7 +44,7 @@ internal static class ValueTaskEx
     public static ValueTask<(int winArgumentIndex, T0 result0, T1 result1, IDisposable promis)> WhenAnyPooled<T0, T1>(ValueTask<T0> task0, ValueTask<T1> task1)
     public static ValueTask<(int winArgumentIndex, T0 result0, T1 result1, IDisposable promis)> WhenAnyPooled<T0, T1>(ValueTask<T0> task0, ValueTask<T1> task1)
     {
     {
         var promise = WhenAnyPromise<T0, T1>.Get(task0, task1);
         var promise = WhenAnyPromise<T0, T1>.Get(task0, task1);
-        return new (promise, 0);
+        return new(promise, 0);
     }
     }
 
 
     class WhenAnyPromise<T0, T1> : IValueTaskSource<(int winArgumentIndex, T0 result0, T1 result1, IDisposable)>, IPoolNode<WhenAnyPromise<T0, T1>>, IDisposable
     class WhenAnyPromise<T0, T1> : IValueTaskSource<(int winArgumentIndex, T0 result0, T1 result1, IDisposable)>, IPoolNode<WhenAnyPromise<T0, T1>>, IDisposable

+ 1 - 1
src/Lua/LuaCoroutine.cs

@@ -153,7 +153,7 @@ public sealed class LuaCoroutine : LuaThread, IValueTaskSource<LuaCoroutine.Yiel
                 {
                 {
                     Stack.PushRange(stack.AsSpan()[^argCount..]);
                     Stack.PushRange(stack.AsSpan()[^argCount..]);
                     //functionTask = Function.InvokeAsync(new() { Access = this.CurrentAccess, ArgumentCount = Stack.Count, ReturnFrameBase = 0 }, cancellationToken);
                     //functionTask = Function.InvokeAsync(new() { Access = this.CurrentAccess, ArgumentCount = Stack.Count, ReturnFrameBase = 0 }, cancellationToken);
-                    functionTask =CurrentAccess.RunAsync(Function,Stack.Count, cancellationToken);
+                    functionTask = CurrentAccess.RunAsync(Function, Stack.Count, cancellationToken);
                     Volatile.Write(ref isFirstCall, false);
                     Volatile.Write(ref isFirstCall, false);
                     if (!functionTask.IsCompleted)
                     if (!functionTask.IsCompleted)
                     {
                     {

+ 1 - 1
src/Lua/LuaFunctionExecutionContext.cs

@@ -63,7 +63,7 @@ public readonly record struct LuaFunctionExecutionContext
             }
             }
             else if (LuaValue.TryGetLuaValueType(t, out var type))
             else if (LuaValue.TryGetLuaValueType(t, out var type))
             {
             {
-                LuaRuntimeException.BadArgument(Thread, index + 1,type, arg.Type);
+                LuaRuntimeException.BadArgument(Thread, index + 1, type, arg.Type);
             }
             }
             else if (arg.Type is LuaValueType.UserData or LuaValueType.LightUserData)
             else if (arg.Type is LuaValueType.UserData or LuaValueType.LightUserData)
             {
             {

+ 1 - 1
src/Lua/Runtime/LuaThreadAccess.cs

@@ -91,7 +91,7 @@ public readonly struct LuaThreadAccess
         }
         }
         finally
         finally
         {
         {
-            this.Thread.PopCallStackFrameUntil(callStackTop-1);
+            this.Thread.PopCallStackFrameUntil(callStackTop - 1);
         }
         }
     }
     }
 
 

+ 2 - 0
src/Lua/Runtime/LuaVirtualMachine.Debug.cs

@@ -126,6 +126,7 @@ public static partial class LuaVirtualMachine
                 context.Thread.PopCallStackFrameWithStackPop();
                 context.Thread.PopCallStackFrameWithStackPop();
             }
             }
         }
         }
+
         context.Thread.ThrowIfCancellationRequested(cancellationToken);
         context.Thread.ThrowIfCancellationRequested(cancellationToken);
 
 
         {
         {
@@ -136,6 +137,7 @@ public static partial class LuaVirtualMachine
             {
             {
                 return r;
                 return r;
             }
             }
+
             context.Thread.ThrowIfCancellationRequested(cancellationToken);
             context.Thread.ThrowIfCancellationRequested(cancellationToken);
             var top = stack.Count;
             var top = stack.Count;
             stack.Push("return");
             stack.Push("return");

+ 17 - 17
src/Lua/Standard/DebugLibrary.cs

@@ -13,21 +13,21 @@ public class DebugLibrary
         var libraryName = "debug";
         var libraryName = "debug";
         Functions =
         Functions =
         [
         [
-            new(libraryName,"getlocal", GetLocal),
-            new(libraryName,"setlocal", SetLocal),
-            new(libraryName,"getupvalue", GetUpValue),
-            new(libraryName,"setupvalue", SetUpValue),
-            new(libraryName,"getmetatable", GetMetatable),
-            new(libraryName,"setmetatable", SetMetatable),
-            new(libraryName,"getuservalue", GetUserValue),
-            new(libraryName,"setuservalue", SetUserValue),
-            new(libraryName,"traceback", Traceback),
-            new(libraryName,"getregistry", GetRegistry),
-            new(libraryName,"upvalueid", UpValueId),
-            new(libraryName,"upvaluejoin", UpValueJoin),
-            new(libraryName,"gethook", GetHook),
-            new(libraryName,"sethook", SetHook),
-            new(libraryName,"getinfo", GetInfo),
+            new(libraryName, "getlocal", GetLocal),
+            new(libraryName, "setlocal", SetLocal),
+            new(libraryName, "getupvalue", GetUpValue),
+            new(libraryName, "setupvalue", SetUpValue),
+            new(libraryName, "getmetatable", GetMetatable),
+            new(libraryName, "setmetatable", SetMetatable),
+            new(libraryName, "getuservalue", GetUserValue),
+            new(libraryName, "setuservalue", SetUserValue),
+            new(libraryName, "traceback", Traceback),
+            new(libraryName, "getregistry", GetRegistry),
+            new(libraryName, "upvalueid", UpValueId),
+            new(libraryName, "upvaluejoin", UpValueJoin),
+            new(libraryName, "gethook", GetHook),
+            new(libraryName, "sethook", SetHook),
+            new(libraryName, "getinfo", GetInfo),
         ];
         ];
     }
     }
 
 
@@ -379,7 +379,7 @@ public class DebugLibrary
             return new(context.Return(LuaValue.Nil));
             return new(context.Return(LuaValue.Nil));
         }
         }
 
 
-        return new(context.Return( LuaValue.FromObject(upValues[n1 - 1])));
+        return new(context.Return(LuaValue.FromObject(upValues[n1 - 1])));
     }
     }
 
 
     public ValueTask<int> UpValueJoin(LuaFunctionExecutionContext context, CancellationToken cancellationToken)
     public ValueTask<int> UpValueJoin(LuaFunctionExecutionContext context, CancellationToken cancellationToken)
@@ -414,7 +414,7 @@ public class DebugLibrary
     {
     {
         var thread = GetLuaThread(context, out var argOffset);
         var thread = GetLuaThread(context, out var argOffset);
         LuaFunction? hook = context.GetArgumentOrDefault<LuaFunction?>(argOffset);
         LuaFunction? hook = context.GetArgumentOrDefault<LuaFunction?>(argOffset);
-        var mask = context.GetArgumentOrDefault<string?>(argOffset + 1)??"";
+        var mask = context.GetArgumentOrDefault<string?>(argOffset + 1) ?? "";
         var count = context.GetArgumentOrDefault<int>(argOffset + 2);
         var count = context.GetArgumentOrDefault<int>(argOffset + 2);
         thread.SetHook(hook, mask, count);
         thread.SetHook(hook, mask, count);
         if (hook is null)
         if (hook is null)

+ 2 - 2
src/Lua/Standard/StringLibrary.cs

@@ -694,13 +694,13 @@ public sealed class StringLibrary
         }
         }
 
 
         init--; // Convert from 1-based to 0-based
         init--; // Convert from 1-based to 0-based
-        
+
         // Check if init is beyond string bounds
         // Check if init is beyond string bounds
         if (init > s.Length)
         if (init > s.Length)
         {
         {
             return new(context.Return(LuaValue.Nil));
             return new(context.Return(LuaValue.Nil));
         }
         }
-        
+
         init = Math.Max(0, init); // Clamp to 0 if negative
         init = Math.Max(0, init); // Clamp to 0 if negative
 
 
         // Check for plain search mode (4th parameter = true)
         // Check for plain search mode (4th parameter = true)

+ 1 - 1
tests/Lua.Tests/PatternMatchingTests.cs

@@ -789,7 +789,7 @@ public class PatternMatchingTests
     }
     }
 
 
     [Test]
     [Test]
-    public async Task Test_PatternMatching_ErrorCases()
+    public void Test_PatternMatching_ErrorCases()
     {
     {
         var state = LuaState.Create();
         var state = LuaState.Create();
         state.OpenStringLibrary();
         state.OpenStringLibrary();