| 123456789101112131415161718192021222324 |
- using Lua.CodeAnalysis;
- namespace Lua.Runtime;
- public class Traceback
- {
- public required CallStackFrame[] StackFrames { get; init; }
- internal string RootChunkName => StackFrames[^1].RootChunkName;
- internal SourcePosition LastPosition => StackFrames[^1].CallPosition!.Value;
- public override string ToString()
- {
- var str = string.Join("\n ", StackFrames
- .Where(x => x.CallPosition != null)
- .Select(x =>
- {
- return $"{x.RootChunkName}:{x.CallPosition!.Value.Line}: {(string.IsNullOrEmpty(x.ChunkName) ? "" : $"in '{x.ChunkName}'")}";
- })
- .Reverse());
- return $"stack traceback:\n {str}";
- }
- }
|