Bläddra i källkod

pastojs: if then <empty> else ;

git-svn-id: trunk@39929 -
Mattias Gaertner 6 år sedan
förälder
incheckning
dd81e62f3a
2 ändrade filer med 33 tillägg och 0 borttagningar
  1. 13 0
      packages/pastojs/src/fppas2js.pp
  2. 20 0
      packages/pastojs/tests/tcmodules.pas

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

@@ -1726,6 +1726,7 @@ type
     Function ConvertExportSymbol(El: TPasExportSymbol; AContext: TConvertContext): TJSElement; virtual;
     Function ConvertExportSymbol(El: TPasExportSymbol; AContext: TConvertContext): TJSElement; virtual;
     Function ConvertExpression(El: TPasExpr; AContext: TConvertContext): TJSElement; virtual;
     Function ConvertExpression(El: TPasExpr; AContext: TConvertContext): TJSElement; virtual;
     Function ConvertImplBlock(El: TPasImplBlock; AContext: TConvertContext ): TJSElement; virtual;
     Function ConvertImplBlock(El: TPasImplBlock; AContext: TConvertContext ): TJSElement; virtual;
+    Function ConvertImplCommand(El: TPasImplCommand; AContext: TConvertContext ): TJSElement; virtual;
     Function ConvertLabelMark(El: TPasImplLabelMark; AContext: TConvertContext): TJSElement; virtual;
     Function ConvertLabelMark(El: TPasImplLabelMark; AContext: TConvertContext): TJSElement; virtual;
     Function ConvertLabels(El: TPasLabels; AContext: TConvertContext): TJSElement; virtual;
     Function ConvertLabels(El: TPasLabels; AContext: TConvertContext): TJSElement; virtual;
     Function ConvertModule(El: TPasModule; AContext: TConvertContext): TJSElement; virtual;
     Function ConvertModule(El: TPasModule; AContext: TConvertContext): TJSElement; virtual;
@@ -14994,6 +14995,16 @@ begin
     RaiseNotSupported(El,AContext,20161024192156);
     RaiseNotSupported(El,AContext,20161024192156);
 end;
 end;
 
 
+function TPasToJSConverter.ConvertImplCommand(El: TPasImplCommand;
+  AContext: TConvertContext): TJSElement;
+begin
+  if El.Command<>'' then
+    RaiseNotSupported(El,AContext,20181013224809,El.Command);
+  if not (El.Parent is TPasImplIfElse) then
+    RaiseNotSupported(El,AContext,20181013224929,GetObjName(El.Parent));
+  Result:=nil;
+end;
+
 function TPasToJSConverter.ConvertPackage(El: TPasPackage;
 function TPasToJSConverter.ConvertPackage(El: TPasPackage;
   AContext: TConvertContext): TJSElement;
   AContext: TConvertContext): TJSElement;
 
 
@@ -18501,6 +18512,8 @@ begin
     Result:=ConvertProcedure(TPasProcedure(El),AContext)
     Result:=ConvertProcedure(TPasProcedure(El),AContext)
   else if C.InheritsFrom(TPasImplBlock) then
   else if C.InheritsFrom(TPasImplBlock) then
     Result:=ConvertImplBlock(TPasImplBlock(El),AContext)
     Result:=ConvertImplBlock(TPasImplBlock(El),AContext)
+  else if C=TPasImplCommand then
+    Result:=ConvertImplCommand(TPasImplCommand(El),AContext)
   else if C.InheritsFrom(TPasModule)  then
   else if C.InheritsFrom(TPasModule)  then
     Result:=ConvertModule(TPasModule(El),AContext)
     Result:=ConvertModule(TPasModule(El),AContext)
   else If (C=TPasPackage)  then
   else If (C=TPasPackage)  then

+ 20 - 0
packages/pastojs/tests/tcmodules.pas

@@ -361,6 +361,7 @@ type
     Procedure TestBitwiseOperators;
     Procedure TestBitwiseOperators;
     Procedure TestFunctionInt;
     Procedure TestFunctionInt;
     Procedure TestFunctionString;
     Procedure TestFunctionString;
+    Procedure TestIfThen;
     Procedure TestForLoop;
     Procedure TestForLoop;
     Procedure TestForLoopInsideFunction;
     Procedure TestForLoopInsideFunction;
     Procedure TestForLoop_ReadVarAfter;
     Procedure TestForLoop_ReadVarAfter;
@@ -6312,6 +6313,25 @@ begin
     ]));
     ]));
 end;
 end;
 
 
+procedure TTestModule.TestIfThen;
+begin
+  StartProgram(false);
+  Add([
+  'var b: boolean;',
+  'begin',
+  '  if b then ;',
+  '  if b then else ;']);
+  ConvertProgram;
+  CheckSource('TestIfThen',
+    LinesToStr([ // statements
+    'this.b = false;',
+    '']),
+    LinesToStr([ // this.$main
+    'if ($mod.b) ;',
+    'if ($mod.b) ;',
+    '']));
+end;
+
 procedure TTestModule.TestForLoop;
 procedure TTestModule.TestForLoop;
 begin
 begin
   StartProgram(false);
   StartProgram(false);