|
@@ -12,7 +12,9 @@
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
|
|
|
**********************************************************************}
|
|
**********************************************************************}
|
|
|
|
+{$IFNDEF FPC_DOTTEDUNITS}
|
|
unit jsparser;
|
|
unit jsparser;
|
|
|
|
+{$ENDIF FPC_DOTTEDUNITS}
|
|
|
|
|
|
{ $define debugparser}
|
|
{ $define debugparser}
|
|
{$mode objfpc}{$H+}
|
|
{$mode objfpc}{$H+}
|
|
@@ -20,8 +22,13 @@ unit jsparser;
|
|
|
|
|
|
interface
|
|
interface
|
|
|
|
|
|
|
|
+{$IFDEF FPC_DOTTEDUNITS}
|
|
|
|
+uses
|
|
|
|
+ System.Classes, System.SysUtils, Js.Scanner, Js.Tree, Js.Token, Js.Base;
|
|
|
|
+{$ELSE FPC_DOTTEDUNITS}
|
|
uses
|
|
uses
|
|
Classes, SysUtils, jsscanner, jstree, jstoken, jsbase;
|
|
Classes, SysUtils, jsscanner, jstree, jstoken, jsbase;
|
|
|
|
+{$ENDIF FPC_DOTTEDUNITS}
|
|
|
|
|
|
Const
|
|
Const
|
|
SEmptyLabel = '';
|
|
SEmptyLabel = '';
|
|
@@ -36,7 +43,7 @@ Const
|
|
MinGeneratorVersion = ecma2021;
|
|
MinGeneratorVersion = ecma2021;
|
|
|
|
|
|
Type
|
|
Type
|
|
- TECMAVersion = jsScanner.TECMAVersion;
|
|
|
|
|
|
+ TECMAVersion = {$IFDEF FPC_DOTTEDUNITS}Js.Scanner{$ELSE}jsscanner{$ENDIF}.TECMAVersion;
|
|
TScopeType = (stFunction,stClass,stModule,stNamespace);
|
|
TScopeType = (stFunction,stClass,stModule,stNamespace);
|
|
TListType = (ltUnknown,ltTuple,ltTemplate);
|
|
TListType = (ltUnknown,ltTuple,ltTemplate);
|
|
TFunctionFlag = (ffAmbient,ffConstructor,ffGenerator);
|
|
TFunctionFlag = (ffAmbient,ffConstructor,ffGenerator);
|
|
@@ -61,11 +68,11 @@ Type
|
|
FScanner : TJSScanner;
|
|
FScanner : TJSScanner;
|
|
FPrevious,
|
|
FPrevious,
|
|
FCurrent : TJSToken;
|
|
FCurrent : TJSToken;
|
|
- FCurrentString : JSBase.TJSString;
|
|
|
|
|
|
+ FCurrentString : {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.TJSString;
|
|
FFreeScanner : Boolean;
|
|
FFreeScanner : Boolean;
|
|
FCurrentVars : TJSElementNodes;
|
|
FCurrentVars : TJSElementNodes;
|
|
FPeekToken: TJSToken;
|
|
FPeekToken: TJSToken;
|
|
- FPeekTokenString: JSBase.TJSString;
|
|
|
|
|
|
+ FPeekTokenString: {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.TJSString;
|
|
FLabelSets,
|
|
FLabelSets,
|
|
FCurrentLabelSet:TJSLabelSet;
|
|
FCurrentLabelSet:TJSLabelSet;
|
|
FLabels : TJSLabel;
|
|
FLabels : TJSLabel;
|
|
@@ -75,11 +82,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(const aValue : jsbase.TJSString) : Boolean;
|
|
|
|
- Procedure CheckIdentifierLiteral(const aValue : jsbase.TJSString);
|
|
|
|
- function ConsumeIdentifierLiteral(const aValue: jsbase.TJSString): TJSToken;
|
|
|
|
|
|
+ function IdentifierIsLiteral(const aValue : {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.TJSString) : Boolean;
|
|
|
|
+ Procedure CheckIdentifierLiteral(const aValue : {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.TJSString);
|
|
|
|
+ function ConsumeIdentifierLiteral(const aValue: {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.TJSString): TJSToken;
|
|
function CheckSemiColonInsert(aToken: TJSToken; Consume: Boolean): Boolean;
|
|
function CheckSemiColonInsert(aToken: TJSToken; Consume: Boolean): Boolean;
|
|
- function EnterLabel(const ALabelName: jsBase.TJSString): TJSLabel;
|
|
|
|
|
|
+ function EnterLabel(const ALabelName: {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.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 +94,14 @@ Type
|
|
procedure FreeCurrentLabelSet;
|
|
procedure FreeCurrentLabelSet;
|
|
function GetVersion: TECMAVersion;
|
|
function GetVersion: TECMAVersion;
|
|
procedure LeaveLabel;
|
|
procedure LeaveLabel;
|
|
- function LookupLabel(const ALabelName: jsBase.TJSString; Kind: TJSToken): TJSLabel;
|
|
|
|
|
|
+ function LookupLabel(const ALabelName: {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.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(const aArgName: jsBase.TJSString; aArgIsSpread: Boolean): TJSArrowFunctionTypeDef; overload;
|
|
|
|
|
|
+ function ParseArrowFunctionTypeDef(const aArgName: {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.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;
|
|
@@ -123,7 +130,7 @@ Type
|
|
function ParseFunctionStatement: TJSElement;
|
|
function ParseFunctionStatement: TJSElement;
|
|
function ParseFunctionBody: TJSFunctionBody;
|
|
function ParseFunctionBody: TJSFunctionBody;
|
|
procedure ParseGenericParamList(aList: TJSElementNodes);
|
|
procedure ParseGenericParamList(aList: TJSElementNodes);
|
|
- function ParseIdentifier(AcceptAsIdentifier: TJSTokens=[]): JSBase.TJSString;
|
|
|
|
|
|
+ function ParseIdentifier(AcceptAsIdentifier: TJSTokens=[]): {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.TJSString;
|
|
function ParseIfStatement: TJSElement;
|
|
function ParseIfStatement: TJSElement;
|
|
function ParseImportStatement: TJSElement;
|
|
function ParseImportStatement: TJSElement;
|
|
function ParseIndexSignature: TJSObjectTypeElementDef;
|
|
function ParseIndexSignature: TJSObjectTypeElementDef;
|
|
@@ -190,7 +197,7 @@ Type
|
|
Procedure Error(const Msg : String);
|
|
Procedure Error(const Msg : String);
|
|
Procedure Error(const Fmt : String; Args : Array of const);
|
|
Procedure Error(const Fmt : String; Args : Array of const);
|
|
// Parse functions
|
|
// Parse functions
|
|
- Function IsIdentifier(const aIdentifier : jsBase.TJSString) : Boolean; inline;
|
|
|
|
|
|
+ Function IsIdentifier(const aIdentifier : {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.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;
|
|
@@ -203,7 +210,7 @@ Type
|
|
Function Parse : TJSElement;
|
|
Function Parse : TJSElement;
|
|
Function ParseProgram : TJSFunctionDeclarationStatement;
|
|
Function ParseProgram : TJSFunctionDeclarationStatement;
|
|
Function CurrentToken : TJSToken;
|
|
Function CurrentToken : TJSToken;
|
|
- Function CurrentTokenString : jsBase.TJSString;
|
|
|
|
|
|
+ Function CurrentTokenString : {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.TJSString;
|
|
Function GetNextToken : TJSToken;
|
|
Function GetNextToken : TJSToken;
|
|
Function PeekNextToken : TJSToken;
|
|
Function PeekNextToken : TJSToken;
|
|
Function IsEndOfLine : Boolean;
|
|
Function IsEndOfLine : Boolean;
|
|
@@ -214,7 +221,11 @@ Type
|
|
|
|
|
|
implementation
|
|
implementation
|
|
|
|
|
|
|
|
+{$IFDEF FPC_DOTTEDUNITS}
|
|
|
|
+uses System.TypInfo;
|
|
|
|
+{$ELSE FPC_DOTTEDUNITS}
|
|
uses typinfo;
|
|
uses typinfo;
|
|
|
|
+{$ENDIF FPC_DOTTEDUNITS}
|
|
|
|
|
|
Resourcestring
|
|
Resourcestring
|
|
SErrUnmatchedCurlyBrace = 'Unmatched }';
|
|
SErrUnmatchedCurlyBrace = 'Unmatched }';
|
|
@@ -270,7 +281,7 @@ begin
|
|
Result:=FCurrent;
|
|
Result:=FCurrent;
|
|
end;
|
|
end;
|
|
|
|
|
|
-Function TJSParser.CurrentTokenString: JSBase.TJSString;
|
|
|
|
|
|
+Function TJSParser.CurrentTokenString: {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.TJSString;
|
|
begin
|
|
begin
|
|
Result:=FCurrentString;
|
|
Result:=FCurrentString;
|
|
end;
|
|
end;
|
|
@@ -288,9 +299,9 @@ begin
|
|
else
|
|
else
|
|
begin
|
|
begin
|
|
FCurrent:=FScanner.FetchToken;
|
|
FCurrent:=FScanner.FetchToken;
|
|
- FCurrentString:=JSBase.TJSString(FScanner.CurTokenString);
|
|
|
|
|
|
+ FCurrentString:={$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.TJSString(FScanner.CurTokenString);
|
|
if (FCurrentString='') then
|
|
if (FCurrentString='') then
|
|
- FCurrentString:=JSBase.TJSString(TokenInfos[FCurrent]);
|
|
|
|
|
|
+ FCurrentString:={$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.TJSString(TokenInfos[FCurrent]);
|
|
end;
|
|
end;
|
|
Result:=FCurrent;
|
|
Result:=FCurrent;
|
|
{$ifdef debugparser}Writeln('GetNextToken (',FScanner.CurLine,',',FScanner.CurColumn,'): ',GetEnumName(TypeInfo(TJSToken),Ord(FCurrent)), ' As string: ',FCurrentString);{$endif debugparser}
|
|
{$ifdef debugparser}Writeln('GetNextToken (',FScanner.CurLine,',',FScanner.CurColumn,'): ',GetEnumName(TypeInfo(TJSToken),Ord(FCurrent)), ' As string: ',FCurrentString);{$endif debugparser}
|
|
@@ -301,7 +312,7 @@ begin
|
|
If (FPeekToken=tjsUnknown) then
|
|
If (FPeekToken=tjsUnknown) then
|
|
begin
|
|
begin
|
|
FPeekToken:=FScanner.FetchToken;
|
|
FPeekToken:=FScanner.FetchToken;
|
|
- FPeekTokenString:=JSBase.TJSString(FScanner.CurTokenString);
|
|
|
|
|
|
+ FPeekTokenString:={$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.TJSString(FScanner.CurTokenString);
|
|
end;
|
|
end;
|
|
{$ifdef debugparser}Writeln('PeekNextToken : ',GetEnumName(TypeInfo(TJSToken),Ord(FPeekToken)), ' As string: ',FPeekTokenString);{$endif debugparser}
|
|
{$ifdef debugparser}Writeln('PeekNextToken : ',GetEnumName(TypeInfo(TJSToken),Ord(FPeekToken)), ' As string: ',FPeekTokenString);{$endif debugparser}
|
|
Result:=FPeekToken;
|
|
Result:=FPeekToken;
|
|
@@ -353,7 +364,7 @@ begin
|
|
L.Free; // ??
|
|
L.Free; // ??
|
|
end;
|
|
end;
|
|
|
|
|
|
-function TJSParser.LookupLabel(const ALabelName: jsBase.TJSString; Kind: TJSToken): TJSLabel;
|
|
|
|
|
|
+function TJSParser.LookupLabel(const ALabelName: {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.TJSString; Kind: TJSToken): TJSLabel;
|
|
|
|
|
|
Var
|
|
Var
|
|
L : TJSLabel;
|
|
L : TJSLabel;
|
|
@@ -382,7 +393,7 @@ begin
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
-function TJSParser.EnterLabel(const ALabelName: jsBase.TJSString): TJSLabel;
|
|
|
|
|
|
+function TJSParser.EnterLabel(const ALabelName: {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.TJSString): TJSLabel;
|
|
|
|
|
|
Var
|
|
Var
|
|
L : TJSLabel;
|
|
L : TJSLabel;
|
|
@@ -475,7 +486,7 @@ begin
|
|
Error(Format(Fmt,Args));
|
|
Error(Format(Fmt,Args));
|
|
end;
|
|
end;
|
|
|
|
|
|
-function TJSParser.IsIdentifier(const aIdentifier: jsBase.TJSString): Boolean;
|
|
|
|
|
|
+function TJSParser.IsIdentifier(const aIdentifier: {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.TJSString): Boolean;
|
|
begin
|
|
begin
|
|
Result:=IdentifierIsLiteral(aIdentifier);
|
|
Result:=IdentifierIsLiteral(aIdentifier);
|
|
end;
|
|
end;
|
|
@@ -514,7 +525,7 @@ begin
|
|
Error(SerrTokenMismatch,[CurrenttokenString,TokenInfos[aToken]]);
|
|
Error(SerrTokenMismatch,[CurrenttokenString,TokenInfos[aToken]]);
|
|
end;
|
|
end;
|
|
|
|
|
|
-function TJSParser.IdentifierIsLiteral(const aValue: jsbase.TJSString): Boolean;
|
|
|
|
|
|
+function TJSParser.IdentifierIsLiteral(const aValue: {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.TJSString): Boolean;
|
|
begin
|
|
begin
|
|
Result:=(CurrentToken=tjsIdentifier) and (CurrentTokenString=aValue);
|
|
Result:=(CurrentToken=tjsIdentifier) and (CurrentTokenString=aValue);
|
|
end;
|
|
end;
|
|
@@ -525,13 +536,13 @@ begin
|
|
Result:=FScanner.IsTypeScript;
|
|
Result:=FScanner.IsTypeScript;
|
|
end;
|
|
end;
|
|
|
|
|
|
-procedure TJSParser.CheckIdentifierLiteral(const aValue: jsbase.TJSString);
|
|
|
|
|
|
+procedure TJSParser.CheckIdentifierLiteral(const aValue: {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.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(const aValue: jsbase.TJSString): TJSToken;
|
|
|
|
|
|
+function TJSParser.ConsumeIdentifierLiteral(const aValue: {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.TJSString): TJSToken;
|
|
begin
|
|
begin
|
|
CheckidentifierLiteral(aValue);
|
|
CheckidentifierLiteral(aValue);
|
|
Result:=GetNextToken;
|
|
Result:=GetNextToken;
|
|
@@ -557,7 +568,7 @@ begin
|
|
GetNextToken;
|
|
GetNextToken;
|
|
end;
|
|
end;
|
|
|
|
|
|
-function TJSParser.ParseIdentifier (AcceptAsIdentifier : TJSTokens = []): JSBase.TJSString;
|
|
|
|
|
|
+function TJSParser.ParseIdentifier (AcceptAsIdentifier : TJSTokens = []): {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.TJSString;
|
|
{ On entry, on identifier,
|
|
{ On entry, on identifier,
|
|
on exit, after identifier
|
|
on exit, after identifier
|
|
}
|
|
}
|
|
@@ -593,7 +604,7 @@ begin
|
|
PrevRShift:=FScanner.DisableRShift;
|
|
PrevRShift:=FScanner.DisableRShift;
|
|
Try
|
|
Try
|
|
FScanner.DisableRShift:=True;
|
|
FScanner.DisableRShift:=True;
|
|
- ParseTypeList(aList,jstoken.tjsGT,ltTemplate);
|
|
|
|
|
|
+ ParseTypeList(aList,{$IFDEF FPC_DOTTEDUNITS}Js.Token{$ELSE}jsToken{$ENDIF}.tjsGT,ltTemplate);
|
|
Finally
|
|
Finally
|
|
FScanner.DisableRShift:=PrevRShift;
|
|
FScanner.DisableRShift:=PrevRShift;
|
|
end;
|
|
end;
|
|
@@ -630,7 +641,7 @@ begin
|
|
try
|
|
try
|
|
Result:=SigDecl;
|
|
Result:=SigDecl;
|
|
Consume(tjsSQuaredBraceOpen);
|
|
Consume(tjsSQuaredBraceOpen);
|
|
- if (CurrentToken in [TJSToken.tjsNumber,TJSToken.tjsString]) then
|
|
|
|
|
|
+ if (CurrentToken in [TJsToken.tjsNumber,TjsToken.tjsString]) then
|
|
begin
|
|
begin
|
|
SigDecl.IndexName:=CurrentTokenString;
|
|
SigDecl.IndexName:=CurrentTokenString;
|
|
GetNextToken
|
|
GetNextToken
|
|
@@ -700,7 +711,7 @@ end;
|
|
Function TJSParser.CurrentTokenIsValidIdentifier : Boolean;
|
|
Function TJSParser.CurrentTokenIsValidIdentifier : Boolean;
|
|
|
|
|
|
Const
|
|
Const
|
|
- Valididents = [tjsIdentifier,jstoken.tjsString,jstoken.tjsnumber,tjsDelete,
|
|
|
|
|
|
+ Valididents = [tjsIdentifier,{$IFDEF FPC_DOTTEDUNITS}Js.Token{$ELSE}jsToken{$ENDIF}.tjsString,{$IFDEF FPC_DOTTEDUNITS}Js.Token{$ELSE}jsToken{$ENDIF}.tjsnumber,tjsDelete,
|
|
tjsWith,tjsThrow,tjsDefault,tjsAwait,tjscase,tjsdebugger,tjsCatch,
|
|
tjsWith,tjsThrow,tjsDefault,tjsAwait,tjscase,tjsdebugger,tjsCatch,
|
|
tjsextends,tjsexport,tjsImport,tjsEnum,tjsClass,tjsFor,tjsReturn,
|
|
tjsextends,tjsexport,tjsImport,tjsEnum,tjsClass,tjsFor,tjsReturn,
|
|
tjsDo,tjsFinally,tjsWhile,tjsIf,tjsYield,tjsvoid,tjsbreak,
|
|
tjsDo,tjsFinally,tjsWhile,tjsIf,tjsYield,tjsvoid,tjsbreak,
|
|
@@ -727,7 +738,7 @@ Procedure TJSParser.ParseObjectBody(aObj: TJSObjectTypeDef);
|
|
|
|
|
|
|
|
|
|
var
|
|
var
|
|
- aName : jsBase.TJSString;
|
|
|
|
|
|
+ aName : {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.TJSString;
|
|
IsMinus, isReadOnly, isOptional : Boolean;
|
|
IsMinus, isReadOnly, isOptional : Boolean;
|
|
E : TJSObjectTypeElementDef;
|
|
E : TJSObjectTypeElementDef;
|
|
F : TJSMethodDeclaration ;
|
|
F : TJSMethodDeclaration ;
|
|
@@ -898,7 +909,7 @@ begin
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
-function TJSParser.ParseArrowFunctionTypeDef(const aArgName: jsBase.TJSString; aArgIsSpread: Boolean): TJSArrowFunctionTypeDef;
|
|
|
|
|
|
+function TJSParser.ParseArrowFunctionTypeDef(const aArgName: {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.TJSString; aArgIsSpread: Boolean): TJSArrowFunctionTypeDef;
|
|
|
|
|
|
var
|
|
var
|
|
P : TJSTypedParam;
|
|
P : TJSTypedParam;
|
|
@@ -969,7 +980,7 @@ Procedure TJSParser.ParseArrowFunctionTypeDef(aDef : TJSArrowFunctionTypeDef; aF
|
|
|
|
|
|
Var
|
|
Var
|
|
P : TJSTypedParam;
|
|
P : TJSTypedParam;
|
|
- aName : jsBase.TJSString;
|
|
|
|
|
|
+ aName : {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.TJSString;
|
|
IsSpread : Boolean;
|
|
IsSpread : Boolean;
|
|
|
|
|
|
begin
|
|
begin
|
|
@@ -1010,7 +1021,7 @@ Function TJSParser.ParseTypeParenthesised (aOptions : TParseTypeOptions): TJSTyp
|
|
|
|
|
|
Var
|
|
Var
|
|
aDef : TJSTypeDef;
|
|
aDef : TJSTypeDef;
|
|
- aArgName : jsbase.TJSString;
|
|
|
|
|
|
+ aArgName : {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.TJSString;
|
|
isSpread : Boolean;
|
|
isSpread : Boolean;
|
|
|
|
|
|
begin
|
|
begin
|
|
@@ -1063,7 +1074,7 @@ function TJSParser.ParseTypeSimple(aOptions : TParseTypeOptions): TJSTypeDef;
|
|
|
|
|
|
Var
|
|
Var
|
|
NeedNext : Boolean;
|
|
NeedNext : Boolean;
|
|
- aName : jsbase.TJSString;
|
|
|
|
|
|
+ aName : {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.TJSString;
|
|
|
|
|
|
begin
|
|
begin
|
|
Result:=TJSTypeReference(CreateElement(TJSTypeReference));
|
|
Result:=TJSTypeReference(CreateElement(TJSTypeReference));
|
|
@@ -1093,7 +1104,7 @@ function TJSParser.ParseTypeSimple(aOptions : TParseTypeOptions): TJSTypeDef;
|
|
Var
|
|
Var
|
|
CurrT : TJSToken;
|
|
CurrT : TJSToken;
|
|
isInferred,IsReadOnly,IsTypeOf,IsKeyOf : Boolean;
|
|
isInferred,IsReadOnly,IsTypeOf,IsKeyOf : Boolean;
|
|
- aName : jsBase.TJSString;
|
|
|
|
|
|
+ aName : {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.TJSString;
|
|
|
|
|
|
begin
|
|
begin
|
|
Result:=Nil;
|
|
Result:=Nil;
|
|
@@ -1119,7 +1130,7 @@ begin
|
|
begin
|
|
begin
|
|
Consume(tjsImport);
|
|
Consume(tjsImport);
|
|
Consume(tjsBraceOpen);
|
|
Consume(tjsBraceOpen);
|
|
- Expect(tjsToken.tjsString);
|
|
|
|
|
|
+ Expect(TjsToken.tjsString);
|
|
Result:=TJSImportTypeRef(CreateElement(TJSImportTypeRef));
|
|
Result:=TJSImportTypeRef(CreateElement(TJSImportTypeRef));
|
|
TJSImportTypeRef(Result).FileName:=CurrentTokenString;
|
|
TJSImportTypeRef(Result).FileName:=CurrentTokenString;
|
|
getNextToken;
|
|
getNextToken;
|
|
@@ -1143,7 +1154,7 @@ begin
|
|
TJSTypeFuncCall(Result).ArgType:=ParseTypeParenthesised(aOptions);
|
|
TJSTypeFuncCall(Result).ArgType:=ParseTypeParenthesised(aOptions);
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
- tjsTrue,tjsFalse,tjsToken.tjsNumber,tjsToken.tjsString :
|
|
|
|
|
|
+ tjsTrue,tjsFalse,TjsToken.tjsNumber,TjsToken.tjsString :
|
|
if (ptoAllowLiteral in aOptions) then
|
|
if (ptoAllowLiteral in aOptions) then
|
|
begin
|
|
begin
|
|
Result:=TJSFixedValueReference(CreateElement(TJSFixedValueReference));
|
|
Result:=TJSFixedValueReference(CreateElement(TJSFixedValueReference));
|
|
@@ -1426,7 +1437,7 @@ Var
|
|
P : TJSTypedParam;
|
|
P : TJSTypedParam;
|
|
IsSpread : Boolean;
|
|
IsSpread : Boolean;
|
|
allowed : TJSTokens;
|
|
allowed : TJSTokens;
|
|
- aName : jsBase.TJSString;
|
|
|
|
|
|
+ aName : {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.TJSString;
|
|
|
|
|
|
begin
|
|
begin
|
|
allowed:=[tjsEllipsis, tjsIdentifier];
|
|
allowed:=[tjsEllipsis, tjsIdentifier];
|
|
@@ -1473,7 +1484,7 @@ end;
|
|
function TJSParser.ParseFunctionDeclaration(aFlags : TFunctionFlags) : TJSFunctionDeclarationStatement;
|
|
function TJSParser.ParseFunctionDeclaration(aFlags : TFunctionFlags) : TJSFunctionDeclarationStatement;
|
|
|
|
|
|
Var
|
|
Var
|
|
- Id : jsBase.TJSString;
|
|
|
|
|
|
+ Id : {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.TJSString;
|
|
D : TJSFuncDef;
|
|
D : TJSFuncDef;
|
|
isGenerator : Boolean;
|
|
isGenerator : Boolean;
|
|
TP : TJSElementNodes;
|
|
TP : TJSElementNodes;
|
|
@@ -1641,7 +1652,7 @@ begin
|
|
While CurrentToken=tjsComma do
|
|
While CurrentToken=tjsComma do
|
|
GetNextToken;
|
|
GetNextToken;
|
|
NeedAssign:=True;
|
|
NeedAssign:=True;
|
|
- If (CurrentToken in [tjsIdentifier,jstoken.tjsString,jstoken.tjsnumber]) then
|
|
|
|
|
|
+ If (CurrentToken in [tjsIdentifier,{$IFDEF FPC_DOTTEDUNITS}Js.Token{$ELSE}jsToken{$ENDIF}.tjsString,{$IFDEF FPC_DOTTEDUNITS}Js.Token{$ELSE}jsToken{$ENDIF}.tjsnumber]) then
|
|
begin
|
|
begin
|
|
E:=N.Elements.AddElement;
|
|
E:=N.Elements.AddElement;
|
|
E.Name:=CurrentTokenString;
|
|
E.Name:=CurrentTokenString;
|
|
@@ -1724,7 +1735,7 @@ end;
|
|
function TJSParser.ParseRegularExpressionLiteral: TJSElement;
|
|
function TJSParser.ParseRegularExpressionLiteral: TJSElement;
|
|
|
|
|
|
Var
|
|
Var
|
|
- S,pa,fl : jsBase.TJSString;
|
|
|
|
|
|
+ S,pa,fl : {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.TJSString;
|
|
P : integer;
|
|
P : integer;
|
|
R : TJSRegularExpressionLiteral;
|
|
R : TJSRegularExpressionLiteral;
|
|
begin
|
|
begin
|
|
@@ -1776,8 +1787,8 @@ begin
|
|
L.Value.AsBoolean:=(CurrentToken=tjsTrue);
|
|
L.Value.AsBoolean:=(CurrentToken=tjsTrue);
|
|
GetNextToken;
|
|
GetNextToken;
|
|
end;
|
|
end;
|
|
- jstoken.tjsNumber : Result:=ParseNumericLiteral;
|
|
|
|
- jstoken.tjsString : Result:=ParseStringLiteral;
|
|
|
|
|
|
+ {$IFDEF FPC_DOTTEDUNITS}Js.Token{$ELSE}jsToken{$ENDIF}.tjsNumber : Result:=ParseNumericLiteral;
|
|
|
|
+ {$IFDEF FPC_DOTTEDUNITS}Js.Token{$ELSE}jsToken{$ENDIF}.tjsString : Result:=ParseStringLiteral;
|
|
tjsDiv,
|
|
tjsDiv,
|
|
tjsDivEq : Result:=ParseRegularExpressionLiteral
|
|
tjsDivEq : Result:=ParseRegularExpressionLiteral
|
|
else
|
|
else
|
|
@@ -2731,7 +2742,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 : jsbase.TJSString;
|
|
|
|
|
|
+ aName,aAlias : {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.TJSString;
|
|
begin
|
|
begin
|
|
Consume(tjsCurlyBraceOpen);
|
|
Consume(tjsCurlyBraceOpen);
|
|
if (CurrentToken<>tjsCurlyBraceClose) then
|
|
if (CurrentToken<>tjsCurlyBraceClose) then
|
|
@@ -2799,7 +2810,7 @@ begin
|
|
try
|
|
try
|
|
Result:=Imp;
|
|
Result:=Imp;
|
|
// Just module name
|
|
// Just module name
|
|
- if CurrentToken = jstoken.tjsString then
|
|
|
|
|
|
+ if CurrentToken = {$IFDEF FPC_DOTTEDUNITS}Js.Token{$ELSE}jsToken{$ENDIF}.tjsString then
|
|
begin
|
|
begin
|
|
Imp.ModuleName:=CurrentTokenString;
|
|
Imp.ModuleName:=CurrentTokenString;
|
|
GetNextToken;
|
|
GetNextToken;
|
|
@@ -2842,9 +2853,9 @@ begin
|
|
if not IsAssigned then
|
|
if not IsAssigned then
|
|
begin
|
|
begin
|
|
ConsumeIdentifierLiteral('from');
|
|
ConsumeIdentifierLiteral('from');
|
|
- Expect(jstoken.tjsString);
|
|
|
|
|
|
+ Expect({$IFDEF FPC_DOTTEDUNITS}Js.Token{$ELSE}jsToken{$ENDIF}.tjsString);
|
|
Imp.ModuleName:=CurrentTokenString;
|
|
Imp.ModuleName:=CurrentTokenString;
|
|
- Consume(jstoken.tjsString);
|
|
|
|
|
|
+ Consume({$IFDEF FPC_DOTTEDUNITS}Js.Token{$ELSE}jsToken{$ENDIF}.tjsString);
|
|
end;
|
|
end;
|
|
Consume(tjsSemicolon,True);
|
|
Consume(tjsSemicolon,True);
|
|
except
|
|
except
|
|
@@ -2956,7 +2967,7 @@ begin
|
|
Exp.Declaration:=ParseAssignmentExpression;
|
|
Exp.Declaration:=ParseAssignmentExpression;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
- jsToken.tjsAssign:
|
|
|
|
|
|
+ {$IFDEF FPC_DOTTEDUNITS}Js.Token{$ELSE}jsToken{$ENDIF}.tjsAssign:
|
|
begin
|
|
begin
|
|
if IsTypeScript then
|
|
if IsTypeScript then
|
|
begin
|
|
begin
|
|
@@ -3011,9 +3022,9 @@ begin
|
|
if aExpectFrom and IdentifierIsLiteral('from') then
|
|
if aExpectFrom and IdentifierIsLiteral('from') then
|
|
begin
|
|
begin
|
|
ConsumeIdentifierLiteral('from');
|
|
ConsumeIdentifierLiteral('from');
|
|
- Expect(jstoken.tjsString);
|
|
|
|
|
|
+ Expect({$IFDEF FPC_DOTTEDUNITS}Js.Token{$ELSE}jsToken{$ENDIF}.tjsString);
|
|
Exp.ModuleName:=CurrentTokenString;
|
|
Exp.ModuleName:=CurrentTokenString;
|
|
- Consume(jstoken.tjsString);
|
|
|
|
|
|
+ Consume({$IFDEF FPC_DOTTEDUNITS}Js.Token{$ELSE}jsToken{$ENDIF}.tjsString);
|
|
end;
|
|
end;
|
|
Consume(tjsSemicolon,True);
|
|
Consume(tjsSemicolon,True);
|
|
except
|
|
except
|
|
@@ -3194,7 +3205,7 @@ function TJSParser.ParseTryStatement : TJSElement;
|
|
|
|
|
|
Var
|
|
Var
|
|
BO,BC,BF : TJSElement;
|
|
BO,BC,BF : TJSElement;
|
|
- Id : jstree.TJSString;
|
|
|
|
|
|
+ Id : {$IFDEF FPC_DOTTEDUNITS}Js.Tree{$ELSE}jsTree{$ENDIF}.TJSString;
|
|
T : TJSTryStatement;
|
|
T : TJSTryStatement;
|
|
|
|
|
|
begin
|
|
begin
|
|
@@ -3353,7 +3364,7 @@ Var
|
|
Oni,olhs: Boolean;
|
|
Oni,olhs: Boolean;
|
|
F : TJSFunctionDeclarationStatement;
|
|
F : TJSFunctionDeclarationStatement;
|
|
TP : TJSElementNodes;
|
|
TP : TJSElementNodes;
|
|
- N : jsBase.TJSString;
|
|
|
|
|
|
+ N : {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.TJSString;
|
|
|
|
|
|
begin
|
|
begin
|
|
{$ifdef debugparser} Writeln('>>> ParseFunctionExpression');{$endif}
|
|
{$ifdef debugparser} Writeln('>>> ParseFunctionExpression');{$endif}
|
|
@@ -3700,14 +3711,14 @@ function TJSParser.ParseSourceElements (ScopeType : TScopeType = stFunction; Par
|
|
|
|
|
|
Const
|
|
Const
|
|
StatementTokens = [tjsNULL, tjsTRUE, tjsFALSE,
|
|
StatementTokens = [tjsNULL, tjsTRUE, tjsFALSE,
|
|
- tjsAWait, tjsTHIS, tjsIdentifier,jstoken.tjsSTRING,jstoken.tjsNUMBER,
|
|
|
|
|
|
+ tjsAWait, tjsTHIS, tjsIdentifier,{$IFDEF FPC_DOTTEDUNITS}Js.Token{$ELSE}jsToken{$ENDIF}.tjsSTRING,{$IFDEF FPC_DOTTEDUNITS}Js.Token{$ELSE}jsToken{$ENDIF}.tjsNUMBER,
|
|
tjsBraceOpen,tjsCurlyBraceOpen,tjsSquaredBraceOpen,
|
|
tjsBraceOpen,tjsCurlyBraceOpen,tjsSquaredBraceOpen,
|
|
tjsLet, tjsConst, tjsDebugger, tjsImport, tjsExport,
|
|
tjsLet, tjsConst, tjsDebugger, tjsImport, tjsExport,
|
|
tjsNew,tjsDelete,tjsVoid,tjsTypeOf,
|
|
tjsNew,tjsDelete,tjsVoid,tjsTypeOf,
|
|
tjsPlusPlus,tjsMinusMinus,
|
|
tjsPlusPlus,tjsMinusMinus,
|
|
tjsPlus,tjsMinus,tjsNot,tjsNE,tjsSNE,tjsSemicolon,
|
|
tjsPlus,tjsMinus,tjsNot,tjsNE,tjsSNE,tjsSemicolon,
|
|
- tjsVAR,tjsIF,tjsDO,tjsWHILE,tjsFOR,jstoken.tjsCONTINUE,jstoken.tjsBREAK,jstoken.tjsReturn,
|
|
|
|
- tjsWith,jstoken.tjsSWITCH,tjsThrow,TjsTry,tjsDIV,tjsDIVEQ, tjsEnum];
|
|
|
|
|
|
+ tjsVAR,tjsIF,tjsDO,tjsWHILE,tjsFOR,{$IFDEF FPC_DOTTEDUNITS}Js.Token{$ELSE}jsToken{$ENDIF}.tjsCONTINUE,{$IFDEF FPC_DOTTEDUNITS}Js.Token{$ELSE}jsToken{$ENDIF}.tjsBREAK,{$IFDEF FPC_DOTTEDUNITS}Js.Token{$ELSE}jsToken{$ENDIF}.tjsReturn,
|
|
|
|
+ tjsWith,{$IFDEF FPC_DOTTEDUNITS}Js.Token{$ELSE}jsToken{$ENDIF}.tjsSWITCH,tjsThrow,TjsTry,tjsDIV,tjsDIVEQ, tjsEnum];
|
|
|
|
|
|
Var
|
|
Var
|
|
F : TJSFunctionDeclarationStatement;
|
|
F : TJSFunctionDeclarationStatement;
|
|
@@ -3768,9 +3779,9 @@ begin
|
|
if aSync then
|
|
if aSync then
|
|
GetNextToken;
|
|
GetNextToken;
|
|
Case CurrentToken of
|
|
Case CurrentToken of
|
|
- jstoken.tjsEOF:
|
|
|
|
|
|
+ {$IFDEF FPC_DOTTEDUNITS}Js.Token{$ELSE}jsToken{$ENDIF}.tjsEOF:
|
|
done:=True;
|
|
done:=True;
|
|
- jstoken.tjsFunction:
|
|
|
|
|
|
+ {$IFDEF FPC_DOTTEDUNITS}Js.Token{$ELSE}jsToken{$ENDIF}.tjsFunction:
|
|
begin
|
|
begin
|
|
If (PeekNextToken<>tjsBraceOpen) then
|
|
If (PeekNextToken<>tjsBraceOpen) then
|
|
begin
|
|
begin
|
|
@@ -3788,20 +3799,20 @@ begin
|
|
Result.Statements.AddNode(IsAmbient).Node:=E;
|
|
Result.Statements.AddNode(IsAmbient).Node:=E;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
- jstoken.tjsClass:
|
|
|
|
|
|
+ {$IFDEF FPC_DOTTEDUNITS}Js.Token{$ELSE}jsToken{$ENDIF}.tjsClass:
|
|
begin
|
|
begin
|
|
E:=Self.ParseClassStatement(isAmbient,isAbstract);
|
|
E:=Self.ParseClassStatement(isAmbient,isAbstract);
|
|
Result.Statements.AddNode(IsAmbient).Node:=E;
|
|
Result.Statements.AddNode(IsAmbient).Node:=E;
|
|
C:=TJSClassStatement(E).Decl;
|
|
C:=TJSClassStatement(E).Decl;
|
|
Result.Classes.AddNode(IsAmbient).Node:=C;
|
|
Result.Classes.AddNode(IsAmbient).Node:=C;
|
|
end;
|
|
end;
|
|
- jstoken.tjsEnum:
|
|
|
|
|
|
+ {$IFDEF FPC_DOTTEDUNITS}Js.Token{$ELSE}jsToken{$ENDIF}.tjsEnum:
|
|
begin
|
|
begin
|
|
E:=Self.ParseEnumDeclarationStatement;
|
|
E:=Self.ParseEnumDeclarationStatement;
|
|
Result.Statements.AddNode(IsAmbient).Node:=E;
|
|
Result.Statements.AddNode(IsAmbient).Node:=E;
|
|
Result.Enums.AddNode(IsAmbient).Node:=TJSEnumStatement(E).EnumDecl;
|
|
Result.Enums.AddNode(IsAmbient).Node:=TJSEnumStatement(E).EnumDecl;
|
|
end;
|
|
end;
|
|
- jsToken.tjsMul:
|
|
|
|
|
|
+ {$IFDEF FPC_DOTTEDUNITS}Js.Token{$ELSE}jsToken{$ENDIF}.tjsMul:
|
|
begin
|
|
begin
|
|
if (ScopeType=stClass) then
|
|
if (ScopeType=stClass) then
|
|
begin
|
|
begin
|
|
@@ -3810,7 +3821,7 @@ begin
|
|
else
|
|
else
|
|
DefaultParsing;
|
|
DefaultParsing;
|
|
end;
|
|
end;
|
|
- jsToken.tjsSQuaredBraceOpen:
|
|
|
|
|
|
+ {$IFDEF FPC_DOTTEDUNITS}Js.Token{$ELSE}jsToken{$ENDIF}.tjsSQuaredBraceOpen:
|
|
begin
|
|
begin
|
|
if isTypeScript and (ScopeType=stClass) then
|
|
if isTypeScript and (ScopeType=stClass) then
|
|
begin
|
|
begin
|
|
@@ -3891,7 +3902,7 @@ end;
|
|
function TJSParser.ParseClassDeclaration(isAmbient: Boolean; IsAbstract: Boolean): TJSClassDeclaration;
|
|
function TJSParser.ParseClassDeclaration(isAmbient: Boolean; IsAbstract: Boolean): TJSClassDeclaration;
|
|
|
|
|
|
Var
|
|
Var
|
|
-// aName : jsBase.TJSString;
|
|
|
|
|
|
+// aName : {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.TJSString;
|
|
// aTypeDef : TJSTypeDef;
|
|
// aTypeDef : TJSTypeDef;
|
|
aClassDef : TJSObjectTypeDef;
|
|
aClassDef : TJSObjectTypeDef;
|
|
|
|
|
|
@@ -3979,7 +3990,7 @@ Procedure TJSParser.ParseAmbientClassBody(aObj: TJSObjectTypeDef);
|
|
Result.Name:='any';
|
|
Result.Name:='any';
|
|
end;
|
|
end;
|
|
|
|
|
|
- Function CheckSpecial(aName : jsBase.TJSstring) : Boolean;
|
|
|
|
|
|
+ Function CheckSpecial(aName : {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.TJSstring) : Boolean;
|
|
|
|
|
|
begin
|
|
begin
|
|
Result:=IsIdentifier(aName) and Not (PeekNextToken in [tjsConditional,tjsColon]);
|
|
Result:=IsIdentifier(aName) and Not (PeekNextToken in [tjsConditional,tjsColon]);
|
|
@@ -3988,7 +3999,7 @@ Procedure TJSParser.ParseAmbientClassBody(aObj: TJSObjectTypeDef);
|
|
end;
|
|
end;
|
|
|
|
|
|
var
|
|
var
|
|
- aName : jsBase.TJSString;
|
|
|
|
|
|
+ aName : {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.TJSString;
|
|
IsSet, IsGet, IsAbstract,isStatic, isReadOnly, isOptional : Boolean;
|
|
IsSet, IsGet, IsAbstract,isStatic, isReadOnly, isOptional : Boolean;
|
|
E : TJSObjectTypeElementDef;
|
|
E : TJSObjectTypeElementDef;
|
|
F : TJSMethodDeclaration ;
|
|
F : TJSMethodDeclaration ;
|
|
@@ -4142,7 +4153,7 @@ function TJSParser.ParseClassExpression: TJSClassDeclaration;
|
|
Var
|
|
Var
|
|
Oni,olhs: Boolean;
|
|
Oni,olhs: Boolean;
|
|
C : TJSClassDeclaration;
|
|
C : TJSClassDeclaration;
|
|
- aName : jsBase.TJSString;
|
|
|
|
|
|
+ aName : {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.TJSString;
|
|
aType : TJSTypeDef;
|
|
aType : TJSTypeDef;
|
|
|
|
|
|
begin
|
|
begin
|
|
@@ -4186,7 +4197,7 @@ function TJSParser.ParseModuleDeclaration: TJSModuleDeclaration;
|
|
// on exit, we're after closing }
|
|
// on exit, we're after closing }
|
|
|
|
|
|
Var
|
|
Var
|
|
- aName : jsBase.TJSString;
|
|
|
|
|
|
+ aName : {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.TJSString;
|
|
|
|
|
|
begin
|
|
begin
|
|
Consume(tjsIdentifier);
|
|
Consume(tjsIdentifier);
|
|
@@ -4197,9 +4208,9 @@ begin
|
|
end
|
|
end
|
|
else
|
|
else
|
|
begin
|
|
begin
|
|
- Expect(jstoken.tjsString);
|
|
|
|
|
|
+ Expect({$IFDEF FPC_DOTTEDUNITS}Js.Token{$ELSE}jsToken{$ENDIF}.tjsString);
|
|
aname:=CurrentTokenString;
|
|
aname:=CurrentTokenString;
|
|
- Consume(jsToken.tjsString);
|
|
|
|
|
|
+ Consume({$IFDEF FPC_DOTTEDUNITS}Js.Token{$ELSE}jsToken{$ENDIF}.tjsString);
|
|
end;
|
|
end;
|
|
Result:=TJSModuleDeclaration(CreateElement(TJSModuleDeclaration));
|
|
Result:=TJSModuleDeclaration(CreateElement(TJSModuleDeclaration));
|
|
try
|
|
try
|
|
@@ -4231,7 +4242,7 @@ end;
|
|
function TJSParser.ParseInterfaceDeclaration: TJSInterfaceDeclaration;
|
|
function TJSParser.ParseInterfaceDeclaration: TJSInterfaceDeclaration;
|
|
|
|
|
|
Var
|
|
Var
|
|
- aName : jsBase.TJSString;
|
|
|
|
|
|
+ aName : {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.TJSString;
|
|
PT : TJSElementNodes;
|
|
PT : TJSElementNodes;
|
|
|
|
|
|
begin
|
|
begin
|
|
@@ -4288,7 +4299,7 @@ function TJSParser.ParseNamespaceDeclaration(IsAmbient : Boolean): TJSNamespaceD
|
|
// on exit, we're after closing }
|
|
// on exit, we're after closing }
|
|
|
|
|
|
Var
|
|
Var
|
|
- aName : jsBase.TJSString;
|
|
|
|
|
|
+ aName : {$IFDEF FPC_DOTTEDUNITS}Js.Base{$ELSE}jsBase{$ENDIF}.TJSString;
|
|
IsGlobal : Boolean;
|
|
IsGlobal : Boolean;
|
|
|
|
|
|
begin
|
|
begin
|