瀏覽代碼

* Fix warnings & hints, use resourcestrings, add const where appropriate

Michaël Van Canneyt 3 年之前
父節點
當前提交
b2f46586bc

+ 26 - 25
packages/fcl-js/src/jsparser.pp

@@ -75,11 +75,11 @@ Type
     procedure ClassDefToMembers(aClass: TJSClassDeclaration; aClassDef: TJSObjectTypeDef);
     procedure ClassDefToMembers(aClass: TJSClassDeclaration; aClassDef: TJSObjectTypeDef);
     function CurrentTokenIsValidIdentifier: Boolean;
     function CurrentTokenIsValidIdentifier: Boolean;
     function GetIsTypeScript: Boolean;
     function GetIsTypeScript: Boolean;
-    function  IdentifierIsLiteral(aValue : String) : Boolean;
-    Procedure CheckIdentifierLiteral(aValue : String);
-    function ConsumeIdentifierLiteral(aValue: String): TJSToken;
+    function  IdentifierIsLiteral(const aValue : jsbase.TJSString) : Boolean;
+    Procedure CheckIdentifierLiteral(const aValue : jsbase.TJSString);
+    function ConsumeIdentifierLiteral(const aValue: jsbase.TJSString): TJSToken;
     function CheckSemiColonInsert(aToken: TJSToken; Consume: Boolean): Boolean;
     function CheckSemiColonInsert(aToken: TJSToken; Consume: Boolean): Boolean;
-    function EnterLabel(ALabelName: String): TJSLabel;
+    function EnterLabel(const ALabelName: jsBase.TJSString): TJSLabel;
     // Check that current token is aToken
     // Check that current token is aToken
     procedure Expect(aToken: TJSToken);
     procedure Expect(aToken: TJSToken);
     // Check that current token is aToken and goto next token.
     // Check that current token is aToken and goto next token.
@@ -87,14 +87,14 @@ Type
     procedure FreeCurrentLabelSet;
     procedure FreeCurrentLabelSet;
     function GetVersion: TECMAVersion;
     function GetVersion: TECMAVersion;
     procedure LeaveLabel;
     procedure LeaveLabel;
-    function LookupLabel(ALabelName: String; Kind: TJSToken): TJSLabel;
+    function LookupLabel(const ALabelName: jsBase.TJSString; Kind: TJSToken): TJSLabel;
     function ParseAdditiveExpression: TJSElement;
     function ParseAdditiveExpression: TJSElement;
     procedure ParseAliasElements(aElements: TJSAliasElements);
     procedure ParseAliasElements(aElements: TJSAliasElements);
     procedure ParseAmbientClassBody(aObj: TJSObjectTypeDef);
     procedure ParseAmbientClassBody(aObj: TJSObjectTypeDef);
     function ParseArguments: TJSarguments;
     function ParseArguments: TJSarguments;
     function ParseArrayLiteral: TJSElement;
     function ParseArrayLiteral: TJSElement;
     procedure ParseArrowFunctionTypeDef(aDef: TJSArrowFunctionTypeDef; aFirstParam: TJSTypedParam); overload;
     procedure ParseArrowFunctionTypeDef(aDef: TJSArrowFunctionTypeDef; aFirstParam: TJSTypedParam); overload;
-    function ParseArrowFunctionTypeDef(aArgName: jsBase.TJSString; aArgIsSpread: Boolean): TJSArrowFunctionTypeDef; overload;
+    function ParseArrowFunctionTypeDef(const  aArgName: jsBase.TJSString; aArgIsSpread: Boolean): TJSArrowFunctionTypeDef; overload;
     function ParseArrowFunctionTypeDef(aFirst: TJSObjectTypeDef; aArgIsSpread: Boolean): TJSArrowFunctionTypeDef;  overload;
     function ParseArrowFunctionTypeDef(aFirst: TJSObjectTypeDef; aArgIsSpread: Boolean): TJSArrowFunctionTypeDef;  overload;
     function ParseAssignmentExpression: TJSElement;
     function ParseAssignmentExpression: TJSElement;
     function ParseBitwiseAndExpression: TJSElement;
     function ParseBitwiseAndExpression: TJSElement;
@@ -187,16 +187,16 @@ Type
     Function CreateElement(AElementClass : TJSElementClass)  : TJSElement; virtual;
     Function CreateElement(AElementClass : TJSElementClass)  : TJSElement; virtual;
     Procedure FreeElement(aElement : TJSElement); virtual;
     Procedure FreeElement(aElement : TJSElement); virtual;
     Procedure FreeElement(aElements : TJSElementNodes); virtual;
     Procedure FreeElement(aElements : TJSElementNodes); virtual;
-    Procedure Error(Msg : String);
-    Procedure Error(Fmt : String; Args : Array of const);
+    Procedure Error(const Msg : String);
+    Procedure Error(const Fmt : String; Args : Array of const);
     // Parse functions
     // Parse functions
-    Function IsIdentifier(const aIdentifier : String) : Boolean; inline;
+    Function IsIdentifier(const aIdentifier : jsBase.TJSString) : Boolean; inline;
     function ParseSourceElements(ScopeType : TScopeType = stFunction; ParentisAmbient : Boolean = False): TJSSourceElements;
     function ParseSourceElements(ScopeType : TScopeType = stFunction; ParentisAmbient : Boolean = False): TJSSourceElements;
     Property FunctionDepth : Integer Read FFunctionDepth Write FFunctionDepth;
     Property FunctionDepth : Integer Read FFunctionDepth Write FFunctionDepth;
     Property NoIn : Boolean Read FNoIn Write FNoIn;
     Property NoIn : Boolean Read FNoIn Write FNoIn;
     Property IsLHS : Boolean Read FIsLHS Write FIsLHS;
     Property IsLHS : Boolean Read FIsLHS Write FIsLHS;
   Public
   Public
-    Constructor Create(AInput: TStream; aVersion : TECMAVersion = ecma5; aIsTypeScript : Boolean = false; aFileName : String = '');
+    Constructor Create(AInput: TStream; aVersion : TECMAVersion = ecma5; aIsTypeScript : Boolean = false; const aFileName : String = '');
     // Scanner has version
     // Scanner has version
     Constructor Create(AScanner : TJSScanner);
     Constructor Create(AScanner : TJSScanner);
     Destructor Destroy; override;
     Destructor Destroy; override;
@@ -353,7 +353,7 @@ begin
   L.Free; // ??
   L.Free; // ??
 end;
 end;
 
 
-function TJSParser.LookupLabel(ALabelName : String; Kind : TJSToken) :TJSLabel;
+function TJSParser.LookupLabel(const ALabelName: jsBase.TJSString; Kind: TJSToken): TJSLabel;
 
 
 Var
 Var
   L : TJSLabel;
   L : TJSLabel;
@@ -382,7 +382,7 @@ begin
     end;
     end;
 end;
 end;
 
 
-function TJSParser.EnterLabel(ALabelName : String) :TJSLabel;
+function TJSParser.EnterLabel(const ALabelName: jsBase.TJSString): TJSLabel;
 
 
 Var
 Var
   L : TJSLabel;
   L : TJSLabel;
@@ -451,7 +451,7 @@ begin
   aElements.Free;
   aElements.Free;
 end;
 end;
 
 
-Procedure TJSParser.Error(Msg: String);
+Procedure TJSParser.Error(const Msg: String);
 
 
 Var
 Var
   ErrAt : String;
   ErrAt : String;
@@ -470,17 +470,17 @@ begin
   Raise E;
   Raise E;
 end;
 end;
 
 
-Procedure TJSParser.Error(Fmt: String; Args: Array of const);
+Procedure TJSParser.Error(const Fmt: String; Args: Array of const);
 begin
 begin
   Error(Format(Fmt,Args));
   Error(Format(Fmt,Args));
 end;
 end;
 
 
-function TJSParser.IsIdentifier(const aIdentifier: String): Boolean;
+function TJSParser.IsIdentifier(const aIdentifier: jsBase.TJSString): Boolean;
 begin
 begin
   Result:=IdentifierIsLiteral(aIdentifier);
   Result:=IdentifierIsLiteral(aIdentifier);
 end;
 end;
 
 
-constructor TJSParser.Create(AInput: TStream; aVersion: TECMAVersion; aIsTypeScript: Boolean; aFileName : String = '');
+constructor TJSParser.Create(AInput: TStream; aVersion: TECMAVersion; aIsTypeScript: Boolean; const aFileName : String = '');
 begin
 begin
   FInput:=AInput;
   FInput:=AInput;
   FCurrent:=TJSUnknown;
   FCurrent:=TJSUnknown;
@@ -514,23 +514,24 @@ begin
       Error(SerrTokenMismatch,[CurrenttokenString,TokenInfos[aToken]]);
       Error(SerrTokenMismatch,[CurrenttokenString,TokenInfos[aToken]]);
 end;
 end;
 
 
-function TJSParser.IdentifierIsLiteral(aValue: String): Boolean;
+function TJSParser.IdentifierIsLiteral(const aValue: jsbase.TJSString): Boolean;
 begin
 begin
   Result:=(CurrentToken=tjsIdentifier) and (CurrentTokenString=aValue);
   Result:=(CurrentToken=tjsIdentifier) and (CurrentTokenString=aValue);
 end;
 end;
 
 
+
 function TJSParser.GetIsTypeScript: Boolean;
 function TJSParser.GetIsTypeScript: Boolean;
 begin
 begin
   Result:=FScanner.IsTypeScript;
   Result:=FScanner.IsTypeScript;
 end;
 end;
 
 
-procedure TJSParser.CheckIdentifierLiteral(aValue: String);
+procedure TJSParser.CheckIdentifierLiteral(const aValue: jsbase.TJSString);
 begin
 begin
   if Not IdentifierIsLiteral(aValue) then
   if Not IdentifierIsLiteral(aValue) then
     Error(SErrExpectedButFound,[aValue,CurrentTokenString]);
     Error(SErrExpectedButFound,[aValue,CurrentTokenString]);
 end;
 end;
 
 
-Function TJSParser.ConsumeIdentifierLiteral(aValue: String) : TJSToken;
+function TJSParser.ConsumeIdentifierLiteral(const aValue: jsbase.TJSString): TJSToken;
 begin
 begin
   CheckidentifierLiteral(aValue);
   CheckidentifierLiteral(aValue);
   Result:=GetNextToken;
   Result:=GetNextToken;
@@ -897,7 +898,7 @@ begin
     end;
     end;
 end;
 end;
 
 
-Function TJSParser.ParseArrowFunctionTypeDef (aArgName : jsBase.TJSString; aArgIsSpread : Boolean) : TJSArrowFunctionTypeDef;
+function TJSParser.ParseArrowFunctionTypeDef(const aArgName: jsBase.TJSString; aArgIsSpread: Boolean): TJSArrowFunctionTypeDef;
 
 
 var
 var
   P : TJSTypedParam;
   P : TJSTypedParam;
@@ -1092,7 +1093,7 @@ function TJSParser.ParseTypeSimple(aOptions : TParseTypeOptions): TJSTypeDef;
 Var
 Var
   CurrT : TJSToken;
   CurrT : TJSToken;
   isInferred,IsReadOnly,IsTypeOf,IsKeyOf : Boolean;
   isInferred,IsReadOnly,IsTypeOf,IsKeyOf : Boolean;
-  aName : String;
+  aName : jsBase.TJSString;
 
 
 begin
 begin
   Result:=Nil;
   Result:=Nil;
@@ -1683,7 +1684,7 @@ begin
   try
   try
     if Pos('0x',CurrentTokenString) = 1 then
     if Pos('0x',CurrentTokenString) = 1 then
       begin
       begin
-      D:=StrToInt('$'+Copy(CurrentTokenString,3,Length(CurrentTokenString)-2));
+      D:=StrToInt('$'+UTF8Encode(Copy(CurrentTokenString,3,Length(CurrentTokenString)-2)));
       I:=0;
       I:=0;
       end
       end
     else
     else
@@ -1721,7 +1722,7 @@ end;
 function TJSParser.ParseRegularExpressionLiteral: TJSElement;
 function TJSParser.ParseRegularExpressionLiteral: TJSElement;
 
 
 Var
 Var
-  S,pa,fl : String;
+  S,pa,fl : jsBase.TJSString;
   P : integer;
   P : integer;
   R : TJSRegularExpressionLiteral;
   R : TJSRegularExpressionLiteral;
 begin
 begin
@@ -2728,7 +2729,7 @@ end;
 Procedure TJSParser.ParseAliasElements(aElements : TJSAliasElements);
 Procedure TJSParser.ParseAliasElements(aElements : TJSAliasElements);
 // Parse { N [as M] }. On entry, must be on {, on exit curtoken is token after }
 // Parse { N [as M] }. On entry, must be on {, on exit curtoken is token after }
 Var
 Var
-  aName,aAlias : String;
+  aName,aAlias : jsbase.TJSString;
 begin
 begin
   Consume(tjsCurlyBraceOpen);
   Consume(tjsCurlyBraceOpen);
   if (CurrentToken<>tjsCurlyBraceClose) then
   if (CurrentToken<>tjsCurlyBraceClose) then
@@ -3974,7 +3975,7 @@ Procedure TJSParser.ParseAmbientClassBody(aObj: TJSObjectTypeDef);
     Result.Name:='any';
     Result.Name:='any';
   end;
   end;
   
   
-  Function CheckSpecial(aName : string) : Boolean;
+  Function CheckSpecial(aName : jsBase.TJSstring) : Boolean;
   
   
   begin
   begin
     Result:=IsIdentifier(aName) and Not (PeekNextToken in [tjsConditional,tjsColon]);
     Result:=IsIdentifier(aName) and Not (PeekNextToken in [tjsConditional,tjsColon]);

+ 9 - 9
packages/fcl-js/src/jsscanner.pp

@@ -36,7 +36,7 @@ Const
 
 
 resourcestring
 resourcestring
   SErrInvalidCharacter = 'Invalid character ''%s''';
   SErrInvalidCharacter = 'Invalid character ''%s''';
-  SErrOpenString = 'string exceeds end of line';
+  SErrUnTerminatedString = 'string exceeds end of line';
   SErrExpectedEllipsis = 'Expected ellipsis, got ..';
   SErrExpectedEllipsis = 'Expected ellipsis, got ..';
   SErrIncludeFileNotFound = 'Could not find include file ''%s''';
   SErrIncludeFileNotFound = 'Could not find include file ''%s''';
   SErrIfXXXNestingLimitReached = 'Nesting of $IFxxx too deep';
   SErrIfXXXNestingLimitReached = 'Nesting of $IFxxx too deep';
@@ -100,7 +100,7 @@ Type
     FSourceFilename: string;
     FSourceFilename: string;
     FCurRow: Integer;
     FCurRow: Integer;
     FCurToken: TJSToken;
     FCurToken: TJSToken;
-    FCurTokenString: String;
+    FCurTokenString: UTF8String;
     FCurLine: string;
     FCurLine: string;
     FWasMultilineString: Boolean;
     FWasMultilineString: Boolean;
     TokenStr: PChar;
     TokenStr: PChar;
@@ -141,7 +141,7 @@ Type
     property CurRow: Integer read FCurRow;
     property CurRow: Integer read FCurRow;
     property CurColumn: Integer read GetCurColumn;
     property CurColumn: Integer read GetCurColumn;
     property CurToken: TJSToken read FCurToken;
     property CurToken: TJSToken read FCurToken;
-    property CurTokenString: String read FCurTokenString;
+    property CurTokenString: UTF8String read FCurTokenString;
     property ECMAVersion : TECMAVersion Read FECMAVersion Write SetECMAVersion;
     property ECMAVersion : TECMAVersion Read FECMAVersion Write SetECMAVersion;
     Property IsTypeScript : Boolean Read FIsTypeScript Write SetIsTypeScript;
     Property IsTypeScript : Boolean Read FIsTypeScript Write SetIsTypeScript;
     Property DisableRShift : Boolean Read FDisableRShift Write FDisableRShift;
     Property DisableRShift : Boolean Read FDisableRShift Write FDisableRShift;
@@ -426,7 +426,7 @@ Var
   Delim : Char;
   Delim : Char;
   TokenStart : PChar;
   TokenStart : PChar;
   Len,OLen: Integer;
   Len,OLen: Integer;
-  S : String;
+  S : UTF8String;
 
 
   Procedure AddToString;
   Procedure AddToString;
 
 
@@ -463,9 +463,9 @@ begin
         '\' : S:='\';
         '\' : S:='\';
         '/' : S:='/';
         '/' : S:='/';
         'u' : begin
         'u' : begin
-              S:=ReadUniCodeEscape;
+              S:=UTF8Encode(ReadUniCodeEscape);
               end;
               end;
-        #0  : Error(SErrOpenString);
+        #0  : Error(SErrUnterminatedString);
       else
       else
         Error(SErrInvalidCharacter, [TokenStr[0]]);
         Error(SErrInvalidCharacter, [TokenStr[0]]);
       end;
       end;
@@ -482,20 +482,20 @@ begin
     if TokenStr[0] = #0 then
     if TokenStr[0] = #0 then
       begin
       begin
       if Delim<>'`' then
       if Delim<>'`' then
-        Error(SErrOpenString)
+        Error(SErrUnterminatedString)
       else
       else
         begin
         begin
         AddToString;
         AddToString;
         FCurTokenString:=FCurTokenString+FSourceFile.LastLF;
         FCurTokenString:=FCurTokenString+FSourceFile.LastLF;
         oLen:=oLen+Length(FSourceFile.LastLF);
         oLen:=oLen+Length(FSourceFile.LastLF);
         if Not FetchLine then
         if Not FetchLine then
-          Error(SErrOpenString);
+          Error(SErrUnterminatedString);
         TokenStart:=TokenStr;
         TokenStart:=TokenStr;
         end
         end
       end;
       end;
     end;
     end;
   if TokenStr[0] = #0 then
   if TokenStr[0] = #0 then
-    Error(SErrOpenString);
+    Error(SErrUnterminatedString);
   AddToString;
   AddToString;
   Inc(TokenStr);
   Inc(TokenStr);
   Result := tjsString;
   Result := tjsString;

+ 1 - 1
packages/fcl-js/src/jstoken.pp

@@ -58,7 +58,7 @@ const
   FirstKeyword = tjsAwait;
   FirstKeyword = tjsAwait;
   LastKeyWord = tJSYield;
   LastKeyWord = tJSYield;
 
 
-  TokenInfos: array[TJSToken] of string = ('unknown',
+  TokenInfos: array[TJSToken] of String = ('unknown',
        // Specials
        // Specials
         'EOF','whitespace','Char','String', 'identifier','number','comment','regular expression', 'reserved word',
         'EOF','whitespace','Char','String', 'identifier','number','comment','regular expression', 'reserved word',
         '&&','&=',
         '&&','&=',

+ 2 - 2
packages/fcl-js/src/jstree.pp

@@ -1319,9 +1319,9 @@ Type
 
 
   TJSImportTypeRef = Class(TJSTypeReference)
   TJSImportTypeRef = Class(TJSTypeReference)
   private
   private
-    FFileName: String;
+    FFileName: TJSString;
   Public
   Public
-    Property FileName : String Read FFileName Write FFileName;
+    Property FileName : TJSString Read FFileName Write FFileName;
   end;
   end;
 
 
 
 

+ 1 - 2
packages/fcl-js/tests/tcparser.pp

@@ -386,7 +386,7 @@ Var
 begin
 begin
   E:=GetVars;
   E:=GetVars;
   AssertNotNull('Have statements',E);
   AssertNotNull('Have statements',E);
-  Writeln('Count : ',E.Count);
+  // Writeln('Count : ',E.Count);
   If (E.Count=0) then
   If (E.Count=0) then
     Fail('Zero variables defined');
     Fail('Zero variables defined');
   Result:=E.Nodes[0].Node;
   Result:=E.Nodes[0].Node;
@@ -2171,7 +2171,6 @@ Var
   E : TJSSourceElements;
   E : TJSSourceElements;
   N : TJSElement;
   N : TJSElement;
   FD : TJSFunctionDeclarationStatement;
   FD : TJSFunctionDeclarationStatement;
-  P : TJSTypedParam;
 
 
 begin
 begin
   CreateParser('function a (...b,c) {}');
   CreateParser('function a (...b,c) {}');

+ 4 - 10
packages/fcl-js/tests/tctsparser.pp

@@ -5,7 +5,7 @@ unit tctsparser;
 interface
 interface
 
 
 uses
 uses
-  Classes, SysUtils, testregistry, tcparser, jsscanner, jsbase, jstree, jstoken, jsparser;
+  Classes, SysUtils, testregistry, tcparser, jsscanner, jsbase, jstree, jstoken;
 
 
 Type
 Type
 
 
@@ -357,10 +357,10 @@ begin
   AssertEquals('Correct number of elements',2,U.TypeCount);
   AssertEquals('Correct number of elements',2,U.TypeCount);
   AssertEquals('Correct type of element 0',TJSFixedValueReference, U.Types[0].ClassType);
   AssertEquals('Correct type of element 0',TJSFixedValueReference, U.Types[0].ClassType);
   R:=U.Types[0] as TJSFixedValueReference;
   R:=U.Types[0] as TJSFixedValueReference;
-//  AssertEquals('Name type 0','string',R.Name);
+  AssertEquals('Name type 0','string',R.FixedValue.Value.AsString);
   AssertEquals('Correct type of element 0',TJSFixedValueReference, U.Types[1].ClassType);
   AssertEquals('Correct type of element 0',TJSFixedValueReference, U.Types[1].ClassType);
   R:=U.Types[1] as TJSFixedValueReference;
   R:=U.Types[1] as TJSFixedValueReference;
-//  AssertEquals('Name type 1','number',R.Name);
+  AssertEquals('Name type 1','number',R.FixedValue.Value.AsString);
 end;
 end;
 
 
 procedure TTestTypeScriptParser.TestDeclareTypeUnionAllowEmpty;
 procedure TTestTypeScriptParser.TestDeclareTypeUnionAllowEmpty;
@@ -389,7 +389,6 @@ end;
 procedure TTestTypeScriptParser.TestDeclareUnionTuple;
 procedure TTestTypeScriptParser.TestDeclareUnionTuple;
 Var
 Var
   T : TJSTypeDeclaration;
   T : TJSTypeDeclaration;
-  U : TJSUnionTypeDef;
 begin
 begin
   StartTS('declare type Color = string | [number, number, number, number] | ColorObject;');
   StartTS('declare type Color = string | [number, number, number, number] | ColorObject;');
   T:=GetFirstType;
   T:=GetFirstType;
@@ -400,7 +399,6 @@ procedure TTestTypeScriptParser.TestDeclareUnionIntersectionType;
 Var
 Var
   T : TJSTypeDeclaration;
   T : TJSTypeDeclaration;
   U : TJSUnionTypeDef;
   U : TJSUnionTypeDef;
-  R : TJSTypeReference;
 
 
 begin
 begin
   StartTs('declare type MyType = number | (string | number) ;');
   StartTs('declare type MyType = number | (string | number) ;');
@@ -645,8 +643,6 @@ procedure TTestTypeScriptParser.TestDeclareTypeGenericNestedTwice;
 
 
 Var
 Var
   T : TJSTypeDeclaration;
   T : TJSTypeDeclaration;
-  G : TJSGenericTypeRef;
-  R : TJSTypeReference;
 
 
 begin
 begin
   StartTS('type a = A<Q<B<C<D>>>>;');
   StartTS('type a = A<Q<B<C<D>>>>;');
@@ -1251,7 +1247,6 @@ procedure TTestTypeScriptParser.TestDeclareInterfaceExtendsGeneric;
 Var
 Var
   Decl : TJSInterfaceDeclaration;
   Decl : TJSInterfaceDeclaration;
   R : TJSTypeReference;
   R : TJSTypeReference;
-  Lit : TJSLiteral;
 
 
 begin
 begin
   StartTS('interface Empty <TItem> extends ParentEmpty<Titem> {};');
   StartTS('interface Empty <TItem> extends ParentEmpty<Titem> {};');
@@ -1852,7 +1847,6 @@ end;
 procedure TTestTypeScriptParser.TestExportTypeArrowFunctionArgsComma;
 procedure TTestTypeScriptParser.TestExportTypeArrowFunctionArgsComma;
 Var
 Var
   S : TJSExportStatement;
   S : TJSExportStatement;
-  T:TJSTypeDeclaration;
 
 
 begin
 begin
   StartTS('export type ConnectionRequestCb = ('#10+
   StartTS('export type ConnectionRequestCb = ('#10+
@@ -1861,7 +1855,7 @@ begin
           '      reject: ConnectionRequestRejectFn,'#10+
           '      reject: ConnectionRequestRejectFn,'#10+
           '  ) => void;');
           '  ) => void;');
   S:=TJSExportStatement(CheckClass('First statement',TJSExportStatement,GetFirstStatement));
   S:=TJSExportStatement(CheckClass('First statement',TJSExportStatement,GetFirstStatement));
-  T:=TJSTypeDeclaration(CheckClass('Decl',TJSTypeDeclaration,S.Declaration));
+  CheckClass('Decl',TJSTypeDeclaration,S.Declaration);
 end;
 end;
 
 
 procedure TTestTypeScriptParser.TestExportEnum;
 procedure TTestTypeScriptParser.TestExportEnum;