Browse Source

pastojs: function position is implementation, not interface

git-svn-id: trunk@37253 -
Mattias Gaertner 8 years ago
parent
commit
f0a0526b68
2 changed files with 11 additions and 13 deletions
  1. 4 4
      packages/pastojs/src/fppas2js.pp
  2. 7 9
      packages/pastojs/tests/tcsrcmap.pas

+ 4 - 4
packages/pastojs/src/fppas2js.pp

@@ -8618,12 +8618,12 @@ begin
   AssignSt:=nil;
   AssignSt:=nil;
   if AContext.IsGlobal then
   if AContext.IsGlobal then
     begin
     begin
-    AssignSt:=TJSSimpleAssignStatement(CreateElement(TJSSimpleAssignStatement,El));
+    AssignSt:=TJSSimpleAssignStatement(CreateElement(TJSSimpleAssignStatement,ImplProc));
     Result:=AssignSt;
     Result:=AssignSt;
-    AssignSt.LHS:=CreateSubDeclNameExpr(El,El.Name,AContext);
+    AssignSt.LHS:=CreateSubDeclNameExpr(ImplProc,El.Name,AContext);
     end;
     end;
 
 
-  FS:=CreateFunction(El,ImplProc.Body<>nil);
+  FS:=CreateFunction(ImplProc,ImplProc.Body<>nil);
   FD:=FS.AFunction;
   FD:=FS.AFunction;
   if AssignSt<>nil then
   if AssignSt<>nil then
     AssignSt.Expr:=FS
     AssignSt.Expr:=FS
@@ -8656,7 +8656,7 @@ begin
           // has nested procs -> add "var self = this;"
           // has nested procs -> add "var self = this;"
           FuncContext.AddLocalVar(FBuiltInNames[pbivnSelf],FuncContext.ThisPas);
           FuncContext.AddLocalVar(FBuiltInNames[pbivnSelf],FuncContext.ThisPas);
           SelfSt:=CreateVarStatement(FBuiltInNames[pbivnSelf],
           SelfSt:=CreateVarStatement(FBuiltInNames[pbivnSelf],
-                                        CreatePrimitiveDotExpr('this'),El);
+                                        CreatePrimitiveDotExpr('this'),ImplProc);
           AddBodyStatement(SelfSt,BodyPas);
           AddBodyStatement(SelfSt,BodyPas);
           if ImplProcScope.SelfArg<>nil then
           if ImplProcScope.SelfArg<>nil then
             begin
             begin

+ 7 - 9
packages/pastojs/tests/tcsrcmap.pas

@@ -235,8 +235,7 @@ begin
   '  if true then',
   '  if true then',
   '    i:=1234 + 2222',
   '    i:=1234 + 2222',
   '  else',
   '  else',
-  '    i:=3456;',
-  '']);
+  '    i:=3456;']);
   ConvertProgram;
   ConvertProgram;
   CheckSrcMap('TestIf');
   CheckSrcMap('TestIf');
 end;
 end;
@@ -256,8 +255,7 @@ begin
   '  else',
   '  else',
   '    begin',
   '    begin',
   '    E:=''inactive'';',
   '    E:=''inactive'';',
-  '    end;',
-  '']);
+  '    end;']);
   ConvertProgram;
   ConvertProgram;
   CheckSrcMap('TestIfBegin');
   CheckSrcMap('TestIfBegin');
 end;
 end;
@@ -269,8 +267,7 @@ begin
   'var Runner, i: longint;',
   'var Runner, i: longint;',
   'begin',
   'begin',
   '  for Runner := 1000 + 2000 to 3000 do',
   '  for Runner := 1000 + 2000 to 3000 do',
-  '    inc(i);',
-  '']);
+  '    inc(i);']);
   ConvertProgram;
   ConvertProgram;
   CheckSrcMap('TestEmptyProgram');
   CheckSrcMap('TestEmptyProgram');
 end;
 end;
@@ -279,17 +276,18 @@ procedure TTestSrcMap.TestFunction;
 begin
 begin
   StartProgram(false);
   StartProgram(false);
   Add([
   Add([
+  'function DoIt(i: longint): longint; forward;',
+  'const p = 3;',
   'function DoIt(i: longint): longint;',
   'function DoIt(i: longint): longint;',
   'var Runner, j: longint;',
   'var Runner, j: longint;',
   'begin',
   'begin',
   '  j:=0;',
   '  j:=0;',
-  '  for Runner := 1 to j do',
+  '  for Runner := p to j do',
   '    inc(j);',
   '    inc(j);',
   '  Result:=j;',
   '  Result:=j;',
   'end;',
   'end;',
   'begin',
   'begin',
-  '  DoIt(2);',
-  '']);
+  '  DoIt(2);']);
   ConvertProgram;
   ConvertProgram;
   CheckSrcMap('TestFunction');
   CheckSrcMap('TestFunction');
 end;
 end;