--- 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