Browse Source

pastojs: simplified

git-svn-id: trunk@36247 -
Mattias Gaertner 8 years ago
parent
commit
afe2ddc388
1 changed files with 13 additions and 14 deletions
  1. 13 14
      packages/pastojs/src/fppas2js.pp

+ 13 - 14
packages/pastojs/src/fppas2js.pp

@@ -249,7 +249,6 @@ Works:
 
 
 ToDos:
 ToDos:
 - constant evaluation
 - constant evaluation
-- integer ranges
 - static arrays
 - static arrays
 - property index specifier
 - property index specifier
 - RTTI
 - RTTI
@@ -296,6 +295,7 @@ Not in Version 1.0:
   - add Self only if needed
   - add Self only if needed
   - set operators on literals without temporary arrays, a in [b], [a]*b<>[]
   - set operators on literals without temporary arrays, a in [b], [a]*b<>[]
   - shortcut for test set is empty  a=[]  a<>[]
   - shortcut for test set is empty  a=[]  a<>[]
+  - put set literals into constants
   - use a number for small sets
   - use a number for small sets
   - nested procs without var, instead as "function name(){}"
   - nested procs without var, instead as "function name(){}"
   -O1 insert local/unit vars for global type references:
   -O1 insert local/unit vars for global type references:
@@ -924,7 +924,6 @@ type
     function ExtractPasStringLiteral(El: TPasElement; const S: String): TJSString; virtual;
     function ExtractPasStringLiteral(El: TPasElement; const S: String): TJSString; virtual;
     function ComputeConst(Expr: TPasExpr; StoreCustomData: boolean): TJSValue; virtual;
     function ComputeConst(Expr: TPasExpr; StoreCustomData: boolean): TJSValue; virtual;
     function ComputeConstString(Expr: TPasExpr; StoreCustomData, NotEmpty: boolean): String; virtual;
     function ComputeConstString(Expr: TPasExpr; StoreCustomData, NotEmpty: boolean): String; virtual;
-    function IsExternalBracketAccessor(El: TPasElement): boolean;
     // CustomData
     // CustomData
     function GetElementData(El: TPasElementBase;
     function GetElementData(El: TPasElementBase;
       DataClass: TPas2JsElementDataClass): TPas2JsElementData; virtual;
       DataClass: TPas2JsElementDataClass): TPas2JsElementData; virtual;
@@ -936,6 +935,7 @@ type
       false): string; override;
       false): string; override;
     function HasTypeInfo(El: TPasType): boolean; override;
     function HasTypeInfo(El: TPasType): boolean; override;
     function IsTObjectFreeMethod(El: TPasExpr): boolean; virtual;
     function IsTObjectFreeMethod(El: TPasExpr): boolean; virtual;
+    function IsExternalBracketAccessor(El: TPasElement): boolean;
   end;
   end;
 
 
 //------------------------------------------------------------------------------
 //------------------------------------------------------------------------------
@@ -3008,16 +3008,6 @@ begin
   Result:=String(V.AsString);
   Result:=String(V.AsString);
 end;
 end;
 
 
-function TPas2JSResolver.IsExternalBracketAccessor(El: TPasElement): boolean;
-var
-  ExtName: String;
-begin
-  if (not (El is TPasProcedure)) or (TPasProcedure(El).LibrarySymbolName=nil) then
-    exit(false);
-  ExtName:=ComputeConstString(TPasProcedure(El).LibrarySymbolName,false,false);
-  Result:=ExtName=ExtClassBracketAccessor;
-end;
-
 function TPas2JSResolver.GetElementData(El: TPasElementBase;
 function TPas2JSResolver.GetElementData(El: TPasElementBase;
   DataClass: TPas2JsElementDataClass): TPas2JsElementData;
   DataClass: TPas2JsElementDataClass): TPas2JsElementData;
 begin
 begin
@@ -3093,6 +3083,16 @@ begin
   Result:=true;
   Result:=true;
 end;
 end;
 
 
+function TPas2JSResolver.IsExternalBracketAccessor(El: TPasElement): boolean;
+var
+  ExtName: String;
+begin
+  if (not (El is TPasProcedure)) or (TPasProcedure(El).LibrarySymbolName=nil) then
+    exit(false);
+  ExtName:=ComputeConstString(TPasProcedure(El).LibrarySymbolName,false,false);
+  Result:=ExtName=ExtClassBracketAccessor;
+end;
+
 { TP2JConstExprData }
 { TP2JConstExprData }
 
 
 destructor TP2JConstExprData.Destroy;
 destructor TP2JConstExprData.Destroy;
@@ -4453,8 +4453,7 @@ begin
         if ConversionError<>0 then
         if ConversionError<>0 then
           DoError(20161024191248,nInvalidNumber,sInvalidNumber,[El.Value],El);
           DoError(20161024191248,nInvalidNumber,sInvalidNumber,[El.Value],El);
         L:=CreateLiteralNumber(El,Number);
         L:=CreateLiteralNumber(El,Number);
-        if El.Value[1] in ['0'..'9'] then
-          L.Value.CustomValue:=TJSString(El.Value);
+        L.Value.CustomValue:=TJSString(El.Value);
         end;
         end;
       '$','&','%':
       '$','&','%':
         begin
         begin