Pipes refactoring, Fixes in type checker

This commit is contained in:
Michael Schimmel
2026-02-13 23:34:39 +01:00
parent 19cdb2f004
commit dc46a2dd2d
10 changed files with 341 additions and 285 deletions
+10
View File
@@ -92,6 +92,7 @@ type
class operator Implicit(const A: TScalar): Int64; overload; inline;
class operator Implicit(const A: TScalar): Boolean; overload; inline;
class operator Implicit(const A: TScalar): TDateTime; overload; inline;
class operator Implicit(const A: TScalar): IKeyword; overload; inline;
class function StringToKind(const AName: string): TKind; static;
function ToString: String;
@@ -750,6 +751,15 @@ begin
raise EArgumentException.Create('Operator "xor" requires Ordinal or Boolean arguments.');
end;
class operator TScalar.Implicit(const A: TScalar): IKeyword;
begin
case A.Kind of
TKind.Keyword: Result := TKeywordRegistry.GetKeyword(A.Value.AsInt64);
else
raise EInvalidCast.CreateFmt('Cannot implicitly convert %s to Keyword', [A.Kind.ToString]);
end;
end;
class operator TScalar.LeftShift(const A, B: TScalar): TScalar;
begin
if (A.Kind <> TKind.Ordinal) or (B.Kind <> TKind.Ordinal) then