RegressionTests__JavaScriptTests.st
changeset 2075 999cfe441ee8
parent 2069 75d3ef9125cd
child 2097 f32e782522d0
--- a/RegressionTests__JavaScriptTests.st	Wed Dec 19 17:12:07 2018 +0100
+++ b/RegressionTests__JavaScriptTests.st	Mon Dec 31 17:21:41 2018 +0100
@@ -611,6 +611,39 @@
     "
 !
 
+testCompileInnerFunction01
+    |code f|
+
+    code := '
+execute() {
+    function foo()
+    {
+        Transcript.show("foo called\n");
+    }
+    
+    function bar()
+        return foo;
+    }        
+
+    foo();
+    bar()();
+}
+'.
+    f := JavaScriptCompiler
+        compile:code
+        forClass:nil
+        inCategory:nil
+        notifying:nil
+        install:false.
+
+    "
+     self run:#testCompileInnerFunction01
+     self new testCompileInnerFunction01
+    "
+
+    "Created: / 31-12-2018 / 16:59:36 / Claus Gittinger"
+!
+
 testConditionalExpression01
     self
 	execute:'max(a, b) {
@@ -1707,99 +1740,145 @@
     "
 !
 
+testInnerFunction01
+
+    |savedTranscript collector expected|
+
+    savedTranscript := Smalltalk at:#Transcript.
+    [
+        Smalltalk at:#Transcript put:(collector := '' writeStream).
+
+        self
+            execute:'
+execute() {
+    function foo()
+    {
+        Transcript.show("foo called\n");
+    }
+    function bar()
+        return foo;
+    }        
+
+    foo();
+    bar()();
+}
+'
+            for:nil
+            arguments:#()
+            expect:nil
+    ] ensure:[
+        Smalltalk at:#Transcript put:savedTranscript
+    ].
+
+    expected := String streamContents:[:s |
+                    s showCR:'foo called'.
+                    s showCR:'foo called'.
+                ].
+    self assert:(collector contents = expected).
+
+    "
+     self run:#testInnerFunction01
+     self new testInnerFunction01
+    "
+
+    "Created: / 31-12-2018 / 16:56:10 / Claus Gittinger"
+!
+
 testInnerFunctionWithForLoop
 
     |savedTranscript collector expected|
 
     savedTranscript := Smalltalk at:#Transcript.
     [
-	Smalltalk at:#Transcript put:(collector := '' writeStream).
-
-	self
-	    execute:'
+        Smalltalk at:#Transcript put:(collector := '' writeStream).
+
+        self
+            execute:'
 execute() {
     function foo()
     {
-	Transcript.show("foo called\n");
+        Transcript.show("foo called\n");
     }
 
     function bar()
     {
-	Transcript.show("bar called\n");
+        Transcript.show("bar called\n");
     }
 
     function bla(n)
     {
-	Transcript.show("bla called\n");
+        Transcript.show("bla called\n");
     }
 
     function test()
     {
 
-	foo();
-	bar();
-	var _fecUs;
-	var _fecDs;
-	var _cvUs = Array.new(15);
-	var _cvDs = Array.new(15);
-	var _headerLength = 10;
-	var _headerLength2 = 10;
-	var _raw = Array.new(20);
-
-	for(var l=_headerLength+2;l<=_raw.size;l++)
-	{
-		var x = _raw[l];
-		if(l!!=_raw.size)
-		    { var y = _raw[l+1]; }
-
-		if(_cvUs.size >10 && _cvDs.size>10)
-		{
-		    _fecUs = 15.asInteger - 12.asInteger;
-		    _fecDs = 20.asInteger - 13.asInteger;
-		    bla(_fecUs);
-		    bla(_fecDs);
-		    bla(_cvUs);
-		    bla(_cvDs);
-		    if(_fecUs >=0 && _fecUs >=0)
-		    {
-			Transcript.show("hello\n");
-		    }
-
-		}
-	    if(_cvUs.size == 5)
-	    { Transcript.show("end\n"); }
-	}
-	Transcript.show("bbb\n");
+        foo();
+        bar();
+        var _fecUs;
+        var _fecDs;
+        var _cvUs = Array.new(15);
+        var _cvDs = Array.new(15);
+        var _headerLength = 10;
+        var _headerLength2 = 10;
+        var _raw = Array.new(20);
+
+        for(var l=_headerLength+2;l<=_raw.size;l++)
+        {
+                var x = _raw[l];
+                if(l!!=_raw.size)
+                    { var y = _raw[l+1]; }
+
+                if(_cvUs.size >10 && _cvDs.size>10)
+                {
+                    _fecUs = 15.asInteger - 12.asInteger;
+                    _fecDs = 20.asInteger - 13.asInteger;
+                    bla(_fecUs);
+                    bla(_fecDs);
+                    bla(_cvUs);
+                    bla(_cvDs);
+                    if(_fecUs >=0 && _fecUs >=0)
+                    {
+                        Transcript.show("hello\n");
+                    }
+
+                }
+            if(_cvUs.size == 5)
+            { Transcript.show("end\n"); }
+        }
+        Transcript.show("bbb\n");
     }
 
     test();
 }
 '
-	    for:nil
-	    arguments:#()
-	    expect:nil
+            for:nil
+            arguments:#()
+            expect:nil
     ] ensure:[
-	Smalltalk at:#Transcript put:savedTranscript
+        Smalltalk at:#Transcript put:savedTranscript
     ].
 
     expected := String streamContents:[:s |
-		    s showCR:'foo called'.
-		    s showCR:'bar called'.
-		    9 timesRepeat:[
-			s showCR:'bla called'.
-			s showCR:'bla called'.
-			s showCR:'bla called'.
-			s showCR:'bla called'.
-			s showCR:'hello'.
-		    ].
-		    s showCR:'bbb'.
-		].
+                    s showCR:'foo called'.
+                    s showCR:'bar called'.
+                    9 timesRepeat:[
+                        s showCR:'bla called'.
+                        s showCR:'bla called'.
+                        s showCR:'bla called'.
+                        s showCR:'bla called'.
+                        s showCR:'hello'.
+                    ].
+                    s showCR:'bbb'.
+                ].
     self assert:(collector contents = expected).
 
     "
-     self run:#testVarDeclaration08
-     self new testVarDeclaration08
-    "
+     self run:#testInnerFunctionWithForLoop
+     self new testInnerFunctionWithForLoop
+    "
+
+    "Modified: / 31-12-2018 / 16:56:17 / Claus Gittinger"
 !
 
 testLambdaFunction01