Pipes refactoring, Fixes in type checker
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user