From fb2fc8f6f907eb5880dba77649dd1106b6b08653 Mon Sep 17 00:00:00 2001 From: Michael Schimmel Date: Tue, 6 Jan 2026 12:10:12 +0100 Subject: [PATCH] Refactoring --- Src/AST/Myc.Ast.Evaluator.pas | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Src/AST/Myc.Ast.Evaluator.pas b/Src/AST/Myc.Ast.Evaluator.pas index c248f7b..d5ccba1 100644 --- a/Src/AST/Myc.Ast.Evaluator.pas +++ b/Src/AST/Myc.Ast.Evaluator.pas @@ -356,24 +356,28 @@ begin idx := Visit(N.Index); case base.Kind of - vkSeries: Result := TDataValue(base.AsSeries.Items[Integer(idx.AsScalar.Value.AsInt64)]); + vkSeries: + begin + var i: Integer := idx.AsScalar.Value.AsInt64; + Result := base.AsSeries.Items[i]; + end; vkRecordSeries: begin + var i: Integer := idx.AsScalar.Value.AsInt64; var rs := base.AsRecordSeries; var vals: TArray; SetLength(vals, rs.Def.Count); - var i64 := idx.AsScalar.Value.AsInt64; for var k := 0 to rs.Def.Count - 1 do - vals[k] := rs.Fields[rs.Def.Keywords[k]].Items[Integer(i64)].Value; + vals[k] := rs.Fields[rs.Def.Keywords[k]].Items[i].Value; Result := TScalarRecord.Create(rs.Def, vals); end; vkTuple: begin + var i: Integer := idx.AsScalar.Value.AsInt64; var tpl := base.AsTuple; - var i := idx.AsScalar.Value.AsInt64; if (i < 0) or (i >= tpl.Count) then raise EEvaluatorException.Create('Tuple index out of bounds'); - Result := tpl.Items[Integer(i)]; + Result := tpl.Items[i]; end; else raise EEvaluatorException.Create('Indexer error');