Yield - в инсталляторе!!!
This commit is contained in:
parent
c6eaba8f94
commit
88e9937ffb
|
|
@ -15,7 +15,7 @@ internal static class RevisionClass
|
||||||
public const string Major = "3";
|
public const string Major = "3";
|
||||||
public const string Minor = "1";
|
public const string Minor = "1";
|
||||||
public const string Build = "0";
|
public const string Build = "0";
|
||||||
public const string Revision = "1263";
|
public const string Revision = "1266";
|
||||||
|
|
||||||
public const string MainVersion = Major + "." + Minor;
|
public const string MainVersion = Major + "." + Minor;
|
||||||
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;
|
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
%COREVERSION%=0
|
|
||||||
%REVISION%=1263
|
|
||||||
%MINOR%=1
|
%MINOR%=1
|
||||||
|
%REVISION%=1266
|
||||||
|
%COREVERSION%=0
|
||||||
%MAJOR%=3
|
%MAJOR%=3
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
!define VERSION '3.1.0.1263'
|
!define VERSION '3.1.0.1266'
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
Section $(DESC_Core) Core
|
Section $(DESC_Core) Core
|
||||||
SectionIn 1 2 RO
|
SectionIn 1 2 RO
|
||||||
SetOutPath "$INSTDIR"
|
SetOutPath "$INSTDIR"
|
||||||
File ExecHide.exe
|
File ExecHide.exe
|
||||||
|
|
@ -11,6 +11,8 @@
|
||||||
File "..\bin\SemanticTree.dll"
|
File "..\bin\SemanticTree.dll"
|
||||||
File "..\bin\SyntaxTree.dll"
|
File "..\bin\SyntaxTree.dll"
|
||||||
File "..\bin\SyntaxTreeConverters.dll"
|
File "..\bin\SyntaxTreeConverters.dll"
|
||||||
|
File "..\bin\SyntaxVisitors.dll"
|
||||||
|
File "..\bin\YieldConversionSyntax.dll"
|
||||||
File "..\bin\YieldHelpers.dll"
|
File "..\bin\YieldHelpers.dll"
|
||||||
File "..\bin\ICSharpCode.NRefactory.dll"
|
File "..\bin\ICSharpCode.NRefactory.dll"
|
||||||
File "..\bin\TreeConverter.dll"
|
File "..\bin\TreeConverter.dll"
|
||||||
|
|
@ -47,6 +49,8 @@
|
||||||
${AddFile} "SyntaxTree.dll"
|
${AddFile} "SyntaxTree.dll"
|
||||||
${AddFile} "SyntaxTreeConverters.dll"
|
${AddFile} "SyntaxTreeConverters.dll"
|
||||||
${AddFile} "YieldHelpers.dll"
|
${AddFile} "YieldHelpers.dll"
|
||||||
|
${AddFile} "SyntaxVisitors.dll"
|
||||||
|
${AddFile} "YieldConversionSyntax.dll"
|
||||||
${AddFile} "ICSharpCode.NRefactory.dll"
|
${AddFile} "ICSharpCode.NRefactory.dll"
|
||||||
${AddFile} "TreeConverter.dll"
|
${AddFile} "TreeConverter.dll"
|
||||||
${AddFile} "OptimizerConversion.dll"
|
${AddFile} "OptimizerConversion.dll"
|
||||||
|
|
|
||||||
31
TestSuite/yield1.pas
Normal file
31
TestSuite/yield1.pas
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
function Sq1: sequence of integer;
|
||||||
|
begin
|
||||||
|
yield 1;
|
||||||
|
yield 5;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function Squares(n: integer): sequence of integer;
|
||||||
|
begin
|
||||||
|
for var i:=1 to n do
|
||||||
|
yield i*i;
|
||||||
|
yield 666;
|
||||||
|
begin
|
||||||
|
yield 777;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function Sq2(n: integer): sequence of integer;
|
||||||
|
begin
|
||||||
|
for var i:=1 to n do
|
||||||
|
begin
|
||||||
|
yield i;
|
||||||
|
yield i;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
begin
|
||||||
|
Assert(Sq1.SequenceEqual(Seq(1,5)));
|
||||||
|
Assert(Squares(5).SequenceEqual(Seq(1,4,9,16,25,666,777)),'not Squares(5).SequenceEqual(Seq(1,4,9,16,25))');
|
||||||
|
Assert(Sq2(5).SequenceEqual(Seq(1,1,2,2,3,3,4,4,5,5)));
|
||||||
|
end.
|
||||||
21
TestSuite/yieldcapture1.pas
Normal file
21
TestSuite/yieldcapture1.pas
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
var z:=1;
|
||||||
|
|
||||||
|
type AAA = class
|
||||||
|
y: integer := 1;
|
||||||
|
function f(a: sequence of integer): sequence of integer;
|
||||||
|
begin
|
||||||
|
var k: integer = 1;
|
||||||
|
foreach var x in a do
|
||||||
|
yield x+y+z+k;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
var a1 := new AAA();
|
||||||
|
|
||||||
|
var q := a1.f(Range(1,4));
|
||||||
|
|
||||||
|
var sq := Seq(4,5,6,7);
|
||||||
|
Assert(q.Println.SequenceEqual(sq));
|
||||||
|
Assert(q.Println.SequenceEqual(sq));
|
||||||
|
end.
|
||||||
20
TestSuite/yieldcase.pas
Normal file
20
TestSuite/yieldcase.pas
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
function Sq(n: integer): sequence of integer;
|
||||||
|
begin
|
||||||
|
for var i:=1 to n do
|
||||||
|
case i mod 3 of
|
||||||
|
0: yield 22;
|
||||||
|
1: yield 33;
|
||||||
|
2: yield 44;
|
||||||
|
end;
|
||||||
|
yield 55;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure AssertSeq<T>(q,correct: sequence of T);
|
||||||
|
begin
|
||||||
|
Assert(q.SequenceEqual(correct),q.JoinIntoString);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
begin
|
||||||
|
AssertSeq(Sq(5).Println,Seq(33,44,22,33,44,55));
|
||||||
|
end.
|
||||||
28
TestSuite/yieldcasediap.pas
Normal file
28
TestSuite/yieldcasediap.pas
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
function f(n: integer): sequence of integer;
|
||||||
|
begin
|
||||||
|
var m := n;
|
||||||
|
case m of
|
||||||
|
1: begin
|
||||||
|
yield 3;
|
||||||
|
for var i:=1 to 5 do
|
||||||
|
yield i;
|
||||||
|
end;
|
||||||
|
2: for var i:=1 to 5 do
|
||||||
|
case i of
|
||||||
|
1,2,3: yield 4;
|
||||||
|
4..20: yield -1
|
||||||
|
end;
|
||||||
|
else yield 5;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure AssertSeq<T>(q,correct: sequence of T);
|
||||||
|
begin
|
||||||
|
Assert(q.SequenceEqual(correct),q.JoinIntoString);
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
AssertSeq(f(1).Println,Seq(3,1,2,3,4,5));
|
||||||
|
AssertSeq(f(2).Println,Seq(4,4,4,-1,-1));
|
||||||
|
AssertSeq(f(3).Println,Seq(5));
|
||||||
|
end.
|
||||||
32
TestSuite/yieldfor1.pas
Normal file
32
TestSuite/yieldfor1.pas
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
function Sq1: sequence of integer;
|
||||||
|
begin
|
||||||
|
yield 1;
|
||||||
|
yield 5;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function Squares(n: integer): sequence of integer;
|
||||||
|
begin
|
||||||
|
for var i:=1 to n do
|
||||||
|
yield i*i;
|
||||||
|
yield 666;
|
||||||
|
begin
|
||||||
|
yield 777;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function Sq2(n: integer): sequence of integer;
|
||||||
|
begin
|
||||||
|
yield(555);
|
||||||
|
for var i:=1 to n do
|
||||||
|
begin
|
||||||
|
yield i;
|
||||||
|
yield i;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
begin
|
||||||
|
Assert(Sq1.SequenceEqual(Seq(1,5)),'1');
|
||||||
|
Assert(Squares(5).SequenceEqual(Seq(1,4,9,16,25,666,777)),'not Squares(5).SequenceEqual(Seq(1,4,9,16,25))');
|
||||||
|
Assert(Sq2(5).SequenceEqual(Seq(555,1,1,2,2,3,3,4,4,5,5)),'3');
|
||||||
|
end.
|
||||||
13
TestSuite/yieldforfor.pas
Normal file
13
TestSuite/yieldforfor.pas
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
function Sq(n: integer): sequence of integer;
|
||||||
|
begin
|
||||||
|
for var i:=1 to n do
|
||||||
|
for var j:=1 to n do
|
||||||
|
begin
|
||||||
|
yield i*j;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
begin
|
||||||
|
Assert(Sq(3).SequenceEqual(Seq(1,2,3,2,4,6,3,6,9)),Sq(3).JoinIntoString);
|
||||||
|
end.
|
||||||
22
TestSuite/yieldif.pas
Normal file
22
TestSuite/yieldif.pas
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
function Sq(n: integer): sequence of integer;
|
||||||
|
begin
|
||||||
|
if n mod 2 = 0 then
|
||||||
|
yield 555
|
||||||
|
else yield 444;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function Where1<T>(s: sequence of T; p: T->boolean): sequence of T;
|
||||||
|
begin
|
||||||
|
foreach var x in s do
|
||||||
|
//if p(x) then
|
||||||
|
yield x;
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
Assert(Sq(2).SequenceEqual(Seq(555)),Sq(2).JoinIntoString);
|
||||||
|
Assert(Sq(1).SequenceEqual(Seq(444)),Sq(2).JoinIntoString);
|
||||||
|
var q := Where1(Arr(1,2,3,4),x->x mod 2 <>0);
|
||||||
|
q.Println;
|
||||||
|
//q.Println;
|
||||||
|
//Assert(q.SequenceEqual(Seq(444)),q.JoinIntoString);
|
||||||
|
end.
|
||||||
13
TestSuite/yieldquerytwice.pas
Normal file
13
TestSuite/yieldquerytwice.pas
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
function f<T>(a: sequence of T): sequence of T;
|
||||||
|
begin
|
||||||
|
foreach var x in a do
|
||||||
|
yield x;
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
var q := f(Range(1,4));
|
||||||
|
|
||||||
|
var sq := Seq(1,2,3,4);
|
||||||
|
Assert(q.Println.SequenceEqual(sq));
|
||||||
|
Assert(q.Println.SequenceEqual(sq));
|
||||||
|
end.
|
||||||
18
TestSuite/yieldwhilerepeat.pas
Normal file
18
TestSuite/yieldwhilerepeat.pas
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
function Sq(n: integer): sequence of integer;
|
||||||
|
begin
|
||||||
|
var i:=1;
|
||||||
|
while i<=n do
|
||||||
|
begin
|
||||||
|
yield i;
|
||||||
|
i += 1;
|
||||||
|
end;
|
||||||
|
repeat
|
||||||
|
yield i;
|
||||||
|
i -= 1;
|
||||||
|
until i<=0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
begin
|
||||||
|
Assert(Sq(3).SequenceEqual(Seq(1,2,3,4,3,2,1)),Sq(3).JoinIntoString);
|
||||||
|
end.
|
||||||
Binary file not shown.
Loading…
Reference in a new issue