loom

Форк
0
/
test-interpret-simodo-script-check.out 
3097 строк · 88.6 Кб
1
Тест работы интерпретатора SBL ====================================
2
--- test/source/engine/check/000-00-Blank.s-script :
3

4
--- interpret :
5
Интерпретация выполнена успешно
6
--- test/source/engine/check/000-01-Exceeded.s-script :
7
print a
8
print a
9
print a
10
print a
11
print a
12
print a
13
print a
14
print a
15
--- interpret :
16
Ошибка: Variable 'a' not found
17
Позиция разбора: test/source/engine/check/000-01-Exceeded.s-script:1:7[1,8]
18
Интерпретация прервана
19
--- test/source/engine/check/000-02-TerminalSC.s-script :
20
print 1; print 2; 
21
--- interpret :
22
1
23
2
24
Интерпретация выполнена успешно
25
--- test/source/engine/check/001-00-PushConstant.s-script :
26
print 1
27
--- interpret :
28
1
29
Интерпретация выполнена успешно
30
--- test/source/engine/check/001-01-PushConstant.s-script :
31
print "Hello, World!"
32
--- interpret :
33
Hello, World!
34
Интерпретация выполнена успешно
35
--- test/source/engine/check/001-02-PushConstant.s-script :
36
print 3.14
37
--- interpret :
38
3.14
39
Интерпретация выполнена успешно
40
--- test/source/engine/check/001-03-PushConstant.s-script :
41
print true
42
print false
43
--- interpret :
44
true
45
false
46
Интерпретация выполнена успешно
47
--- test/source/engine/check/001-05-PushConstant.s-script :
48
print null
49
--- interpret :
50
null
51
Интерпретация выполнена успешно
52
--- test/source/engine/check/002-00-PushVariable.s-script :
53
print a
54
--- interpret :
55
Ошибка: Variable 'a' not found
56
Позиция разбора: test/source/engine/check/002-00-PushVariable.s-script:1:7[1,8]
57
Интерпретация прервана
58
--- test/source/engine/check/003-00-ObjectElement.s-script :
59
print math.pix
60
--- interpret :
61
Ошибка: Property 'pix' not found in 'math'
62
Позиция разбора: test/source/engine/check/003-00-ObjectElement.s-script:1:12[1,15]
63
Интерпретация прервана
64
--- test/source/engine/check/003-01-ObjectElement.s-script :
65
import test : t
66

67
print t.test_string
68
call t.set_test_string("new value of test string")
69
print t.test_string
70
--- interpret :
71
initial test string
72
new value of test string
73
Интерпретация выполнена успешно
74
--- test/source/engine/check/003-02-ObjectElement.s-script :
75
import test : t = { test_string : "initiated value of test string" }
76

77
print t.test_string
78
--- interpret :
79
Ошибка: Using a setter 'test_string' when assigning an object is not supported
80
Позиция разбора: test/source/engine/check/003-02-ObjectElement.s-script:1:21[1,32]
81
Интерпретация прервана
82
--- test/source/engine/check/003-03-ObjectElement.s-script :
83
import test : t
84

85
print t.test_string
86
t.test_string = "new value of test string"
87
print t.test_string
88
--- interpret :
89
initial test string
90
new value of test string
91
Интерпретация выполнена успешно
92
--- test/source/engine/check/003-04-ObjectElement.s-script :
93
print math.spec.origin
94
--- interpret :
95
module
96
Интерпретация выполнена успешно
97
--- test/source/engine/check/004-00-FunctionCall.s-script :
98
print math.sin(0.0)
99
--- interpret :
100
0.0
101
Интерпретация выполнена успешно
102
--- test/source/engine/check/004-01-FunctionCall.s-script :
103
print math.cos(0.0)
104
--- interpret :
105
1.0
106
Интерпретация выполнена успешно
107
--- test/source/engine/check/004-02-FunctionCall.s-script :
108
print math.sin()
109
--- interpret :
110
Ошибка: The function call 'sin' contains an incorrect number of arguments
111
Позиция разбора: test/source/engine/check/004-02-FunctionCall.s-script:1:12[1,15]
112
Интерпретация прервана
113
--- test/source/engine/check/004-03-FunctionCall.s-script :
114
print math.pi()
115
--- interpret :
116
Ошибка: Invalid type conversion from float to function of variable 'pi'
117
Позиция разбора: test/source/engine/check/004-03-FunctionCall.s-script:1:12[1,14]
118
Интерпретация прервана
119
--- test/source/engine/check/004-04-FunctionCall.s-script :
120
print math.sin(0)
121
--- interpret :
122
0.0
123
Интерпретация выполнена успешно
124
--- test/source/engine/check/004-05-FunctionCall.s-script :
125
print math.sin(true)
126
--- interpret :
127
Ошибка: Invalid type conversion from bool to float of internal variable
128
Позиция разбора: test/source/engine/check/004-05-FunctionCall.s-script:1:16[1,20]
129
Интерпретация прервана
130
--- test/source/engine/check/006-00-Print.s-script :
131
print math
132
--- interpret :
133
{pi:3.141593}
134
Интерпретация выполнена успешно
135
--- test/source/engine/check/006-01-Print.s-script :
136
print all math
137
--- interpret :
138
{pi:3.141593, sin:<function>, cos:<function>, tan:<function>, asin:<function>, acos:<function>, atan:<function>, sqrt:<function>, exp:<function>, ln:<function>, atan2ND:<function>, signFloat:<function>, signInt:<function>, asinND:<function>, acosND:<function>, atanND:<function>, clampReal:<function>, clampInt:<function>, absReal:<function>, absInt:<function>, length:<function>}#{origin:"module", builtin:true}
139
Интерпретация выполнена успешно
140
--- test/source/engine/check/009-01-ArrayElement.s-script :
141
#{ initial_value : 5 } : a
142

143
print a[0]
144
--- interpret :
145
Ошибка: Invalid type int for indexing. The indexing operation is only available for arrays and objects
146
Позиция разбора: test/source/engine/check/009-01-ArrayElement.s-script:3:7[3,8]
147
Интерпретация прервана
148
--- test/source/engine/check/009-02-ArrayElement.s-script :
149
#{ initial_value : null } : a = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
150

151
print a
152
print a[0]
153
print a[1]
154
print a[2]
155
print a[1][2]
156
--- interpret :
157
[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
158
[1, 2, 3, 4]
159
[5, 6, 7, 8]
160
[9, 10, 11, 12]
161
7
162
Интерпретация выполнена успешно
163
--- test/source/engine/check/009-03-ArrayElement.s-script :
164
# {initial_value : null} type auto
165

166
def auto : x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
167

168
print x
169
print x[4,1]
170
 --- interpret :
171
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
172
Ошибка: Произошло исключение в методе Array::getValueByIndex при обработке оператора: {semantics : "", code : 1, param : "1"}
173
Описание исключения: Out of indexes count
174
Позиция разбора: test/source/engine/check/009-03-ArrayElement.s-script:6:11[6,12]
175
Интерпретация прервана
176
--- test/source/engine/check/009-04-ArrayElement.s-script :
177
# {initial_value : null} type auto
178

179
def auto : x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
180

181
print x
182
print x[4]
183
print x[4][1]
184
 --- interpret :
185
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
186
4
187
Ошибка: Invalid type int for indexing. The indexing operation is only available for arrays and objects
188
Позиция разбора: test/source/engine/check/009-04-ArrayElement.s-script:7:8[7,9]
189
Интерпретация прервана
190
--- test/source/engine/check/009-05-ArrayElement.s-script :
191
print math["pi"]
192
print math[0]
193
print math["pi-pi"]
194
--- interpret :
195
3.141593
196
3.141593
197
null
198
Интерпретация выполнена успешно
199
--- test/source/engine/check/009-06-ArrayElement.s-script :
200
def auto : d = {a : true}
201

202
d["a"] = math.pi * 2
203
d["b"] = ""
204
d["c"] = true
205

206
print d
207
--- interpret :
208
Ошибка: Invalid type conversion from float to bool of internal variable
209
Позиция разбора: test/source/engine/check/009-06-ArrayElement.s-script:3:10[3,21]
210
Интерпретация прервана
211
--- test/source/engine/check/009-07-ArrayElement.s-script :
212
def object : d
213

214
d["a"] = math.pi / 2
215
d["b"] = ""
216
d["c"] = true
217

218
print d
219
--- interpret :
220
{a:1.570796, b:"", c:true}
221
Интерпретация выполнена успешно
222
--- test/source/engine/check/010-00-ObjectStructure.s-script :
223
print all {a: true, a: "b"}
224
--- interpret :
225
Ошибка: Duplicate object element name 'a'
226
Позиция разбора: test/source/engine/check/010-00-ObjectStructure.s-script:1:21[1,22]
227
Интерпретация прервана
228
--- test/source/engine/check/012-00-Import.s-script :
229
import test : t
230

231
print all t
232
--- interpret :
233
{doc:"Нужно будет предусмотреть поддержку трансляции", test_string:<function>, set_test_string:<function>, fibers:<function>}#{origin:"variable", property:true}
234
Интерпретация выполнена успешно
235
--- test/source/engine/check/012-01-Import.s-script :
236
import test type test
237

238
def test : t
239

240
print all t
241
--- interpret :
242
{doc:"Нужно будет предусмотреть поддержку трансляции", test_string:<function>, set_test_string:<function>, fibers:<function>}#{origin:"variable", property:true}
243
Интерпретация выполнена успешно
244
--- test/source/engine/check/012-02-Import.s-script :
245
import test type test = {test_string : "initiated in import statement"}
246

247
def test : t
248

249
print all t
250
--- interpret :
251
Ошибка: Using a setter 'test_string' when assigning an object is not supported
252
Позиция разбора: test/source/engine/check/012-02-Import.s-script:1:26[1,37]
253
Интерпретация прервана
254
--- test/source/engine/check/012-03-Import-sample.s-script :
255
#{initial_value : ""} : first_name, last_name
256
#{initial_value : 10} : year_of_birth
257
--- interpret :
258
Интерпретация выполнена успешно
259
--- test/source/engine/check/012-04-Import.s-script :
260
import "012-03-Import-sample.s-script" :
261
        p1 = { first_name : "Иванов", last_name : "Иван" },
262
        p2 = { first_name : "Петров", last_name : "Пётр", year_of_birth : 1998 }
263

264
print "1"
265
print all p1
266
print all p2
267

268
p1.year_of_birth = 2002
269
print "2"
270
print all p1
271
print all p2
272

273
p1 = {first_name : "Сидоров", last_name : "Сидор"}
274
print "3"
275
print all p1
276
print all p2
277

278
p1 = p2
279
print "4"
280
print all p1
281
print all p2
282

283
p2 = {first_name : "Антонов", last_name : "Антон"}
284
print "5"
285
print all p1
286
print all p2
287
--- interpret :
288
1
289
{first_name:"Иванов", last_name:"Иван", year_of_birth:10}#{origin:"variable", property:true}
290
{first_name:"Петров", last_name:"Пётр", year_of_birth:1998}#{origin:"variable", property:true}
291
2
292
{first_name:"Иванов", last_name:"Иван", year_of_birth:2002}#{origin:"variable", property:true}
293
{first_name:"Петров", last_name:"Пётр", year_of_birth:1998}#{origin:"variable", property:true}
294
3
295
{first_name:"Сидоров", last_name:"Сидор", year_of_birth:2002}#{origin:"variable", property:true}
296
{first_name:"Петров", last_name:"Пётр", year_of_birth:1998}#{origin:"variable", property:true}
297
4
298
{first_name:"Петров", last_name:"Пётр", year_of_birth:1998}#{origin:"variable", property:true}
299
{first_name:"Петров", last_name:"Пётр", year_of_birth:1998}#{origin:"variable", property:true}
300
5
301
{first_name:"Петров", last_name:"Пётр", year_of_birth:1998}#{origin:"variable", property:true}
302
{first_name:"Антонов", last_name:"Антон", year_of_birth:1998}#{origin:"variable", property:true}
303
Интерпретация выполнена успешно
304
--- test/source/engine/check/012-06-Import.s-script :
305
import test1 type test
306

307
print all test
308
--- interpret :
309
Сбой! Module 'test1' was not found
310
Ошибка: Unable to load module 'test1'
311
Позиция разбора: test/source/engine/check/012-06-Import.s-script:1:8[1,13]
312
Интерпретация прервана
313
--- test/source/engine/check/012-07-Import.s-script :
314
import "015-03-Announcement.s-script" : test
315

316
test.x = 3
317
test.i = 2
318
--- interpret :
319
1#{hidden:true, initial_value:0, origin:"variable", property:true}
320
Ошибка: Property 'i' is hidden in 'test' and have not getter 'get_i'
321
Позиция разбора: test/source/engine/check/012-07-Import.s-script:4:6[4,7]
322
Интерпретация прервана
323
--- test/source/engine/check/012-08-Import.s-script :
324
import test : t
325

326
print t.fibers
327
--- interpret :
328
{1:"Flow"}
329
Интерпретация выполнена успешно
330
--- test/source/engine/check/013-00-Contract.s-script :
331
#{} contract bool
332

333
print all bool
334
--- interpret :
335
null#{origin:"contract"}
336
Интерпретация выполнена успешно
337
--- test/source/engine/check/013-01-Contract.s-script :
338
#{ initial_value : null }  type auto
339
#{ initial_value : true }  type bool
340
#{ initial_value : "" }    type string
341
#{ initial_value : 0 }     type int
342
#{ initial_value : 0.0 }   type float
343

344
print all auto
345
print all bool
346
print all string
347
print all int
348
print all float
349
 --- interpret :
350
null#{initial_value:null, origin:"type"}
351
null#{initial_value:true, origin:"type"}
352
null#{initial_value:"", origin:"type"}
353
null#{initial_value:0, origin:"type"}
354
null#{initial_value:0.0, origin:"type"}
355
Интерпретация выполнена успешно
356
--- test/source/engine/check/013-02-Contract.s-script :
357
#{ initial_value : "", mutable : true } contract varstring1
358
#{ initial_value : ""} #{mutable : true } contract varstring2
359

360
print all varstring1
361
print all varstring2
362
--- interpret :
363
null#{initial_value:"", mutable:true, origin:"type"}
364
null#{initial_value:"", mutable:true, origin:"type"}
365
Интерпретация выполнена успешно
366
--- test/source/engine/check/013-03-Contract.s-script :
367
#{mutable : true } import test contract vartest 
368

369
print all vartest
370
--- interpret :
371
{doc:"Нужно будет предусмотреть поддержку трансляции", test_string:<function>, set_test_string:<function>, fibers:<function>}#{mutable:true, origin:"type"}
372
Интерпретация выполнена успешно
373
--- test/source/engine/check/013-04-Contract.s-script :
374
#{doc : true } import test contract doctest
375
--- interpret :
376
Интерпретация выполнена успешно
377
--- test/source/engine/check/013-05-Contract.s-script :
378
def math.cos(0) contract varcos 
379
--- interpret :
380
Интерпретация выполнена успешно
381
--- test/source/engine/check/013-06-Contract.s-script :
382
#{ test : true } contract test_type
383

384
def test_type #{ initial_value : 0.0, mutable : true } import test type Flex
385

386
print all test_type
387
print all Flex
388
--- interpret :
389
Ошибка: Invalid addition of a non-scalar type to a scalar sequence
390
Позиция разбора: test/source/engine/check/013-06-Contract.s-script:3:63[3,67]
391
Интерпретация прервана
392
--- test/source/engine/check/013-07-Contract.s-script :
393
#{ test : true } contract test_type
394

395
def test_type import test #{ initial_value : 0.0, mutable : true } type Flex
396

397
print all test_type
398
print all Flex
399
--- interpret :
400
Ошибка: Invalid addition of a scalar type to a non-scalar sequence
401
Позиция разбора: test/source/engine/check/013-07-Contract.s-script:3:30[3,43]
402
Интерпретация прервана
403
--- test/source/engine/check/015-00-Announcement.s-script :
404
#{ initial_value : true } contract bool 
405

406
def bool : ok
407

408
print all ok
409
--- interpret :
410
true#{initial_value:true, origin:"variable", property:true}
411
Интерпретация выполнена успешно
412
--- test/source/engine/check/015-01-Announcement.s-script :
413
#{ initial_value : 1 }    contract int
414
#{ initial_value : true } contract bool
415

416
def int bool : ok
417

418
print all ok
419
--- interpret :
420
Ошибка: Type overriding
421
Позиция разбора: test/source/engine/check/015-01-Announcement.s-script:4:9[4,13]
422
Интерпретация прервана
423
--- test/source/engine/check/015-02-Announcement.s-script :
424
#{ initial_value : true, mutable : true } :
425
    ok,
426
    error
427

428
print all ok
429
print all error
430
--- interpret :
431
true#{initial_value:true, mutable:true, origin:"variable", property:true}
432
true#{initial_value:true, mutable:true, origin:"variable", property:true}
433
Интерпретация выполнена успешно
434
--- test/source/engine/check/015-03-Announcement.s-script :
435
def hidden int : i = 1
436
def int : x = 3
437

438
print all i--- interpret :
439
1#{hidden:true, initial_value:0, origin:"variable", property:true}
440
Интерпретация выполнена успешно
441
--- test/source/engine/check/015-04-Announcement.s-script :
442
{
443
    def hidden int : i = 1
444
}--- interpret :
445
Ошибка: The internal variables of the module are already hidden
446
Позиция разбора: test/source/engine/check/015-04-Announcement.s-script:2:9[2,15]
447
Интерпретация прервана
448
--- test/source/engine/check/016-00-Declaration.s-script :
449
#{ initial_value : true } contract bool 
450

451
def bool : ok, ok
452
--- interpret :
453
Ошибка: The name 'ok' has already been declared in the local scope
454
Позиция разбора: test/source/engine/check/016-00-Declaration.s-script:3:16[3,18]
455
Интерпретация прервана
456
--- test/source/engine/check/016-01-Declaration.s-script :
457
#{ initial_value : true } contract bool
458

459
def bool : ok
460
def bool : ok
461
--- interpret :
462
Ошибка: The name 'ok' has already been declared in the local scope
463
Позиция разбора: test/source/engine/check/016-01-Declaration.s-script:4:12[4,14]
464
Интерпретация прервана
465
--- test/source/engine/check/016-02-Declaration.s-script :
466
#{ initial_value : true } contract bool
467

468
def bool : ok
469
{ def bool : ok }
470
--- interpret :
471
Интерпретация выполнена успешно
472
--- test/source/engine/check/016-03-Declaration.s-script :
473
#{initial_value : null} : x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
474

475
print x
476
--- interpret :
477
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
478
Интерпретация выполнена успешно
479
--- test/source/engine/check/017-00-Initialize.s-script :
480
#{ mutable : true } contract var
481
#{ initial_value : 0 } contract int 
482

483
def var int : i = 14
484

485
print all i
486
--- interpret :
487
14#{mutable:true, initial_value:0, origin:"variable", property:true}
488
Интерпретация выполнена успешно
489
--- test/source/engine/check/017-01-Initialize.s-script :
490
#{ mutable : true } contract var
491

492
def var import test : test = {test_string : 14}
493

494
print all test
495
--- interpret :
496
Ошибка: Using a setter 'test_string' when assigning an object is not supported
497
Позиция разбора: test/source/engine/check/017-01-Initialize.s-script:3:31[3,42]
498
Интерпретация прервана
499
--- test/source/engine/check/017-02-Initialize.s-script :
500
#{ mutable : true } contract var 
501

502
def var import test : test = {missing_element : 14}
503

504
print all test
505
--- interpret :
506
Ошибка: Element 'missing_element' was not found in the target structure
507
Позиция разбора: test/source/engine/check/017-02-Initialize.s-script:3:31[3,46]
508
Интерпретация прервана
509
--- test/source/engine/check/017-03-Initialize.s-script :
510
#{ initial_value : null } : test = {a : "a", i : 14}
511

512
print all test
513
--- interpret :
514
{a:"a", i:14}#{initial_value:null, origin:"variable", property:true}
515
Интерпретация выполнена успешно
516
--- test/source/engine/check/017-04-Initialize.s-script :
517
#{ initial_value : null } contract auto 
518

519
def auto : i = 14
520

521
print all i
522
--- interpret :
523
14#{initial_value:null, origin:"variable", property:true}
524
Интерпретация выполнена успешно
525
--- test/source/engine/check/017-05-Initialize.s-script :
526
def auto : i = math.cos(0.2)
527

528
print all math.acos(i)
529
--- interpret :
530
0.2
531
Интерпретация выполнена успешно
532
--- test/source/engine/check/018-01-Assignment.s-script :
533
def auto : x = 12.0
534

535
x = 13
536

537
print x
538
--- interpret :
539
13.0
540
Интерпретация выполнена успешно
541
--- test/source/engine/check/023-00-AssignmentAddition.s-script :
542
#{ initial_value : 0, mutable : true } : i
543

544
print i
545
i+=2
546
print i
547
--- interpret :
548
0
549
2
550
Интерпретация выполнена успешно
551
--- test/source/engine/check/023-01-AssignmentAddition.s-script :
552
#{ initial_value : 0, mutable : true } : i
553

554
print i
555
i += x
556
print i
557
--- interpret :
558
0
559
Ошибка: Variable 'x' not found
560
Позиция разбора: test/source/engine/check/023-01-AssignmentAddition.s-script:4:6[4,7]
561
Интерпретация прервана
562
--- test/source/engine/check/023-02-AssignmentAddition.s-script :
563
def auto : a = [1, 2]
564

565
a *= 1
566
a *= 2
567
a *= 3
568

569
print a
570
--- interpret :
571
[6, 12]
572
Интерпретация выполнена успешно
573
--- test/source/engine/check/024-00-AssignmentSubtraction.s-script :
574
#{ initial_value : 0, mutable : true } : i
575

576
print i
577
i -= 2
578
print i
579
--- interpret :
580
0
581
-2
582
Интерпретация выполнена успешно
583
--- test/source/engine/check/025-00-AssignmentMultiplication.s-script :
584
#{ initial_value : 10, mutable : true } : i
585

586
print i
587
i *= 5
588
print i
589
--- interpret :
590
10
591
50
592
Интерпретация выполнена успешно
593
--- test/source/engine/check/026-00-AssignmentDivision.s-script :
594
#{ initial_value : 10, mutable : true } : i
595

596
print i
597
i /= 5
598
print i
599
--- interpret :
600
10
601
2
602
Интерпретация выполнена успешно
603
--- test/source/engine/check/027-00-AssignmentModulo.s-script :
604
#{ initial_value : 13, mutable : true } : i
605

606
print i
607
i %= 5
608
print i
609
--- interpret :
610
13
611
3
612
Интерпретация выполнена успешно
613
--- test/source/engine/check/031-00-FunctionDefinition.s-script :
614
#{ initial_value : null } type auto 
615
#{ initial_value : 0 }    type int 
616

617
def int  : x = 12
618
def auto : f = fn [x] (int : y) { print x+y }
619

620
x = -10
621

622
call f(4)
623
--- interpret :
624
16
625
Интерпретация выполнена успешно
626
--- test/source/engine/check/031-01-FunctionDefinition.s-script :
627
#{ initial_value : null } type auto 
628
#{ initial_value : 0 }    type int 
629

630
def int  : x = 12
631
def auto : f = fn [x1] (int : y) { print x+y }
632

633
call f(4)
634
--- interpret :
635
Ошибка: Variable 'x1' not found
636
Позиция разбора: test/source/engine/check/031-01-FunctionDefinition.s-script:5:20[5,22]
637
Интерпретация прервана
638
--- test/source/engine/check/031-02-FunctionDefinition.s-script :
639
#{ initial_value : null } type auto 
640
#{ initial_value : 0 }    type int 
641

642
def int  : x = 12
643
def auto : f = fn [x] (int : y) -> int { return x+y }
644

645
print f(4)
646
--- interpret :
647
16
648
Интерпретация выполнена успешно
649
--- test/source/engine/check/031-03-FunctionDefinition.s-script :
650
#{ initial_value : null } type auto 
651
#{ initial_value : 0 }    type int
652

653
def int  : x = 12
654
def auto : f = fn [x] (int : y1) -> int { return x+y }
655

656
print f(4)
657
--- interpret :
658
Ошибка: Variable 'y' not found
659
Позиция разбора: test/source/engine/check/031-03-FunctionDefinition.s-script:5:52[5,53]
660
Интерпретация прервана
661
--- test/source/engine/check/031-04-FunctionDefinition.s-script :
662
#{ initial_value : null } type auto 
663
#{ initial_value : 0 }    type int
664

665
def int  : x = 12
666
def auto : f = fn [x] (int : y) -> auto { return x+y }
667

668
x = -10
669

670
print f(4)
671
print x
672
--- interpret :
673
16
674
-10
675
Интерпретация выполнена успешно
676
--- test/source/engine/check/031-05-FunctionDefinition.s-script :
677
#{ initial_value : null } type auto 
678
#{ initial_value : 0 }    type int
679

680
def int  : x = 12
681
def auto : f = fn [x] (int : y) -> int 
682
            {
683
                if (y > 0)
684
                    return x+y
685
                print "Wrong way"
686
                return 0
687
            }
688

689
print f(5)
690
--- interpret :
691
17
692
Интерпретация выполнена успешно
693
--- test/source/engine/check/031-06-FunctionDefinition.s-script :
694
#{ initial_value : null } type auto 
695
#{ initial_value : 0 }    type int
696

697
def int  : x = 12
698
def auto : f = fn [x] (int : y) -> int 
699
            {
700
                if (y > 0) {
701
                    return x+y
702
                }
703
                print "Wrong way"
704
                return 0
705
            }
706
--- interpret :
707
Интерпретация выполнена успешно
708
--- test/source/engine/check/031-07-FunctionDefinition.s-script :
709
#{ initial_value : null } type auto 
710
#{ initial_value : 0 }    type int
711

712
def int  : x = 12
713
def auto : f = fn [x, auto, int] (int : y) -> int 
714
            {
715
                def auto : f = fn [x,y] () -> int { return x+y }
716
                return f()
717
            }
718

719
print f(5)
720
--- interpret :
721
17
722
Интерпретация выполнена успешно
723
--- test/source/engine/check/031-08-FunctionDefinition.s-script :
724
import "031-06-FunctionDefinition.s-script" type m
725

726
print m.f(2)
727
--- interpret :
728
14
729
Интерпретация выполнена успешно
730
--- test/source/engine/check/031-09-FunctionDefinition.s-script :
731
#{ initial_value : null } type auto 
732
#{ initial_value : 0 }    type int
733

734
def int : m1 = 3, m2 = 5
735

736
def auto : mult = fn [] (int : x, int : y) -> int { return (x*y) }
737

738
print mult(m1, m2)
739
--- interpret :
740
15
741
Интерпретация выполнена успешно
742
--- test/source/engine/check/031-10-FunctionDefinition.s-script :
743
def auto : factor = fn [factor] (int : x) -> int 
744
                {
745
                    if (x <= 1)
746
                        return 1
747
    
748
                    return x*factor(x-1)
749
                }
750

751
print factor(10)
752
--- interpret :
753
3628800
754
Интерпретация выполнена успешно
755
--- test/source/engine/check/031-11-FunctionDefinition.s-script :
756
import "031-10-FunctionDefinition.s-script" type f
757

758
print f.factor(5)
759
--- interpret :
760
3628800
761
120
762
Интерпретация выполнена успешно
763
--- test/source/engine/check/031-12-FunctionDefinition.s-script :
764
def auto :
765
    x = 1,
766
    factor = fn [factor] (int : x) -> int
767
        {
768
            if (x <= 1)
769
                return 1
770

771
            return x*factor(x-1)
772
        },
773
    y = 2
774

775
print factor(10)
776
--- interpret :
777
3628800
778
Интерпретация выполнена успешно
779
--- test/source/engine/check/031-13-FunctionDefinition.s-script :
780
#{ initial_value : null } type auto 
781
#{ initial_value : 0 }    type int 
782

783
def int  : x = 12
784
def auto : f = fn [x] (int : x) { print x }
785

786
call f(4)
787
--- interpret :
788
Ошибка: The argument and closure have the same names
789
Позиция разбора: test/source/engine/check/031-13-FunctionDefinition.s-script:5:30[5,31]
790
Интерпретация прервана
791
--- test/source/engine/check/031-14-FunctionDefinition.s-script :
792
#{ initial_value : null } type auto 
793
#{ initial_value : 0 }    type int 
794

795
def int  : x = 12,
796
       y = 2
797
       
798
def auto : f = fn [*] () -> int { return x+y }
799

800
print f()
801
--- interpret :
802
14
803
Интерпретация выполнена успешно
804
--- test/source/engine/check/031-15-FunctionDefinition.s-script :
805
fn factor(int : x) -> int 
806
{
807
    if x <= 1
808
        return 1
809

810
    return x*factor(x-1)
811
}
812

813
print factor(5)
814
--- interpret :
815
120
816
Интерпретация выполнена успешно
817
--- test/source/engine/check/035-00-Return.s-script :
818

819
return
820
--- interpret :
821
Ошибка: Inappropriate use of the return statement
822
Позиция разбора: test/source/engine/check/035-00-Return.s-script:2:1[2,7]
823
Интерпретация прервана
824
--- test/source/engine/check/035-01-Return.s-script :
825
import "035-00-Return.s-script" type ret
826

827
--- interpret :
828
Ошибка: Inappropriate use of the return statement
829
Позиция разбора: test/source/engine/check/035-00-Return.s-script:2:1[2,7]
830
Интерпретация прервана
831
--- test/source/engine/check/041-01-Plus.s-script :
832
print +1
833

834
#{ initial_value : 2 } : ok
835

836
print +ok
837
--- interpret :
838
1
839
2
840
Интерпретация выполнена успешно
841
--- test/source/engine/check/041-02-Plus.s-script :
842
print +1.0
843

844
#{ initial_value : 2.0 } : ok
845

846
print +ok
847
--- interpret :
848
1.0
849
2.0
850
Интерпретация выполнена успешно
851
--- test/source/engine/check/041-03-Plus.s-script :
852
print +""
853
--- interpret :
854
Ошибка: The Plus operation for type string is not defined
855
Позиция разбора: test/source/engine/check/041-03-Plus.s-script:1:7[1,10]
856
Интерпретация прервана
857
--- test/source/engine/check/042-01-Minus.s-script :
858
#{ initial_value : -2 } : ok
859

860
print -ok
861
--- interpret :
862
2
863
Интерпретация выполнена успешно
864
--- test/source/engine/check/042-02-Minus.s-script :
865
#{ initial_value : -2.0 } : ok
866

867
print ok
868
print -ok
869
--- interpret :
870
-2.0
871
2.0
872
Интерпретация выполнена успешно
873
--- test/source/engine/check/042-03-Minus.s-script :
874
print -""
875
--- interpret :
876
Ошибка: The Minus operation for type string is not defined
877
Позиция разбора: test/source/engine/check/042-03-Minus.s-script:1:7[1,10]
878
Интерпретация прервана
879
--- test/source/engine/check/043-01-Not.s-script :
880
#{ initial_value : true } : ok
881

882
print !ok
883
--- interpret :
884
false
885
Интерпретация выполнена успешно
886
--- test/source/engine/check/043-02-Not.s-script :
887
#{ initial_value : 0 } : ok
888

889
print !ok
890
--- interpret :
891
Ошибка: Invalid type conversion from int to bool of variable 'ok'
892
Позиция разбора: test/source/engine/check/043-02-Not.s-script:1:26[1,28]
893
Интерпретация прервана
894
--- test/source/engine/check/051-01-Or.s-script :
895
print true || true
896
print true || false
897
print false || true
898
print false || false
899
--- interpret :
900
true
901
true
902
true
903
false
904
Интерпретация выполнена успешно
905
--- test/source/engine/check/051-02-Or.s-script :
906
print true || 1
907
--- interpret :
908
Ошибка: Invalid type conversion from int to bool of internal variable
909
Позиция разбора: test/source/engine/check/051-02-Or.s-script:1:15[1,16]
910
Интерпретация прервана
911
--- test/source/engine/check/051-03-Or.s-script :
912
print true || null
913
--- interpret :
914
Ошибка: Invalid type conversion from null to bool of internal variable
915
Позиция разбора: test/source/engine/check/051-03-Or.s-script:1:15[1,19]
916
Интерпретация прервана
917
--- test/source/engine/check/051-04-Or.s-script :
918
print null || false
919
--- interpret :
920
Ошибка: Invalid type conversion from null to bool of internal variable
921
Позиция разбора: test/source/engine/check/051-04-Or.s-script:1:7[1,11]
922
Интерпретация прервана
923
--- test/source/engine/check/052-01-And.s-script :
924
print true && true
925
print true && false
926
print false && true
927
print false && false
928
--- interpret :
929
true
930
false
931
false
932
false
933
Интерпретация выполнена успешно
934
--- test/source/engine/check/053-01-Equal.s-script :
935
print true == true
936
print true == false
937
print 1 == 1
938
print 1 == 2
939
print 1. == 1
940
print 1. == 2
941
print 1 == 1.
942
print 1 == 2.
943
print "one" == "one"
944
print "one" == "two"
945
--- interpret :
946
true
947
false
948
true
949
false
950
true
951
false
952
true
953
false
954
true
955
false
956
Интерпретация выполнена успешно
957
--- test/source/engine/check/054-01-NotEqual.s-script :
958
print true != true
959
print true != false
960
print 1 != 1
961
print 1 != 2
962
print 1. != 1
963
print 1. != 2
964
print 1 != 1.
965
print 1 != 2.
966
print "one" != "one"
967
print "one" != "two"
968
--- interpret :
969
false
970
true
971
false
972
true
973
false
974
true
975
false
976
true
977
false
978
true
979
Интерпретация выполнена успешно
980
--- test/source/engine/check/055-01-Less.s-script :
981
print 1 < 1
982
print 1 < 2
983
print 1. < 1
984
print 1. < 2
985
print 1 < 1.
986
print 1 < 2.
987
print "one" < "one"
988
print "one" < "two"
989
--- interpret :
990
false
991
true
992
false
993
true
994
false
995
true
996
false
997
true
998
Интерпретация выполнена успешно
999
--- test/source/engine/check/055-02-Less.s-script :
1000
print true < true
1001
--- interpret :
1002
Ошибка: For operation Less, the use of types bool and bool is not provided
1003
Позиция разбора: test/source/engine/check/055-02-Less.s-script:1:7[1,18]
1004
Интерпретация прервана
1005
--- test/source/engine/check/055-03-Less.s-script :
1006

1007
print 0 < //null
1008
        (4 < null 
1009
            ? true 
1010
            : false)
1011
--- interpret :
1012
Ошибка: Произошло исключение при обработке оператора: {semantics : "", code : 55, param : "<"}
1013
Описание исключения: std::get: wrong index for variant
1014
Позиция разбора: test/source/engine/check/055-03-Less.s-script:2:9[2,10]
1015
Интерпретация прервана
1016
--- test/source/engine/check/056-01-LessOrEqual.s-script :
1017
print 1 <= 1
1018
print 1 <= 2
1019
print 1. <= 1
1020
print 1. <= 2
1021
print 1 <= 1.
1022
print 1 <= 2.
1023
print "one" <= "one"
1024
print "one" <= "two"
1025
--- interpret :
1026
true
1027
true
1028
true
1029
true
1030
true
1031
true
1032
true
1033
true
1034
Интерпретация выполнена успешно
1035
--- test/source/engine/check/057-01-More.s-script :
1036
print 1 > 1
1037
print 1 > 2
1038
print 1. > 1
1039
print 1. > 2
1040
print 1 > 1.
1041
print 1 > 2.
1042
print "one" > "one"
1043
print "one" > "two"
1044
--- interpret :
1045
false
1046
false
1047
false
1048
false
1049
false
1050
false
1051
false
1052
false
1053
Интерпретация выполнена успешно
1054
--- test/source/engine/check/058-01-MoreOrEqual.s-script :
1055
print 1 >= 1
1056
print 1 >= 2
1057
print 1. >= 1
1058
print 1. >= 2
1059
print 1 >= 1.
1060
print 1 >= 2.
1061
print "one" >= "one"
1062
print "one" >= "two"
1063
--- interpret :
1064
true
1065
false
1066
true
1067
false
1068
true
1069
false
1070
true
1071
false
1072
Интерпретация выполнена успешно
1073
--- test/source/engine/check/061-01-Addition.s-script :
1074
print 1 + 2
1075
print 1. + 2
1076
print 1 + 2.
1077
print 1. + 2.
1078
print "one" + "one"
1079
print "one" + true
1080
print "one" + 2
1081
print "one" + 2.
1082
print false + "one"
1083
print 1 + "one"
1084
print 1. + "one"
1085
--- interpret :
1086
3
1087
3.0
1088
3.0
1089
3.0
1090
oneone
1091
onetrue
1092
one2
1093
one2.0
1094
falseone
1095
1one
1096
1.0one
1097
Интерпретация выполнена успешно
1098
--- test/source/engine/check/061-02-Addition.s-script :
1099
print 1 + null
1100
--- interpret :
1101
Ошибка: For operation Addition, the use of types int and null is not provided
1102
Позиция разбора: test/source/engine/check/061-02-Addition.s-script:1:7[1,15]
1103
Интерпретация прервана
1104
--- test/source/engine/check/061-03-Addition.s-script :
1105
def int :
1106
    op1 = 3,
1107
    op2 = 5
1108
print op1 + op2
1109
--- interpret :
1110
8
1111
Интерпретация выполнена успешно
1112
--- test/source/engine/check/062-01-Subtraction.s-script :
1113
print 1 - 2
1114
print 1. - 2
1115
print 1 - 2.
1116
print 1. - 2.
1117
--- interpret :
1118
-1
1119
-1.0
1120
-1.0
1121
-1.0
1122
Интерпретация выполнена успешно
1123
--- test/source/engine/check/062-02-Subtraction.s-script :
1124
print "1" - 2
1125
--- interpret :
1126
Ошибка: For operation Subtraction, the use of types string and string is not provided
1127
Позиция разбора: test/source/engine/check/062-02-Subtraction.s-script:1:7[1,14]
1128
Интерпретация прервана
1129
--- test/source/engine/check/063-01-Multiplication.s-script :
1130
print 3 * 2
1131
print 3. * 2
1132
print 3 * 2.
1133
print 3. * 2.
1134
--- interpret :
1135
6
1136
6.0
1137
6.0
1138
6.0
1139
Интерпретация выполнена успешно
1140
--- test/source/engine/check/064-01-Division.s-script :
1141
print 3 / 2
1142
print 3. / 2
1143
print 3 / 2.
1144
print 3. / 2.
1145
--- interpret :
1146
1
1147
1.5
1148
1.5
1149
1.5
1150
Интерпретация выполнена успешно
1151
--- test/source/engine/check/064-02-Division.s-script :
1152
print 3 / 0
1153
--- interpret :
1154
Ошибка: Произошло исключение при обработке оператора: {semantics : "", code : 64, param : "/"}
1155
Описание исключения: Деление на ноль
1156
Позиция разбора: test/source/engine/check/064-02-Division.s-script:1:9[1,10]
1157
Интерпретация прервана
1158
--- test/source/engine/check/064-03-Division.s-script :
1159
print 3.0 / 0.0
1160
--- interpret :
1161
Ошибка: Произошло исключение при обработке оператора: {semantics : "", code : 64, param : "/"}
1162
Описание исключения: Деление на ноль
1163
Позиция разбора: test/source/engine/check/064-03-Division.s-script:1:11[1,12]
1164
Интерпретация прервана
1165
--- test/source/engine/check/065-01-Modulo.s-script :
1166
print 3 % 2
1167
--- interpret :
1168
1
1169
Интерпретация выполнена успешно
1170
--- test/source/engine/check/065-02-Modulo.s-script :
1171
#{ built_in_type : 2 } :
1172
    a = 13,
1173
    b = 3
1174

1175
print (a/b)*b + a%b == a
1176
--- interpret :
1177
true
1178
Интерпретация выполнена успешно
1179
--- test/source/engine/check/066-01-Power.s-script :
1180
print 3 ^ 2
1181
print 3.5 ^ 2
1182
print 3.5 ^ 2.
1183
--- interpret :
1184
9.0
1185
12.25
1186
12.25
1187
Интерпретация выполнена успешно
1188
--- test/source/engine/check/071-02-Ternary.s-script :
1189
print false ? "false" : "true"
1190
--- interpret :
1191
true
1192
Интерпретация выполнена успешно
1193
--- test/source/engine/check/071-03-Ternary.s-script :
1194
print false ? "false" : true ? "true" : "false"
1195
--- interpret :
1196
true
1197
Интерпретация выполнена успешно
1198
--- test/source/engine/check/071-04-Ternary.s-script :
1199
print true ? true ? "true" : "false" : "false"
1200
--- interpret :
1201
true
1202
Интерпретация выполнена успешно
1203
--- test/source/engine/check/072-01-If.s-script :
1204
if true
1205
    print "Ok"
1206
print "Done"
1207
--- interpret :
1208
Ok
1209
Done
1210
Интерпретация выполнена успешно
1211
--- test/source/engine/check/072-02-If.s-script :
1212
if false
1213
    print "Wrong"
1214
print "Done"
1215
--- interpret :
1216
Done
1217
Интерпретация выполнена успешно
1218
--- test/source/engine/check/072-03-If.s-script :
1219
if false
1220
    print "Wrong"
1221
else
1222
    print "Ok"
1223
print "Done"
1224
--- interpret :
1225
Ok
1226
Done
1227
Интерпретация выполнена успешно
1228
--- test/source/engine/check/072-04-If.s-script :
1229
if (true)
1230
    print "Ok"
1231
else
1232
    print "Wrong"
1233
print "Done"
1234
--- interpret :
1235
Ok
1236
Done
1237
Интерпретация выполнена успешно
1238
--- test/source/engine/check/072-05-If.s-script :
1239
if (false)
1240
    print "Wrong"
1241
else if (true)
1242
    print "Ok"
1243
else
1244
    print "Wrong"
1245
print "Done"
1246
--- interpret :
1247
Ok
1248
Done
1249
Интерпретация выполнена успешно
1250
--- test/source/engine/check/081-00-For.s-script :
1251
for int : i in [1,2,3]
1252
    print i
1253

1254
print "Done"
1255
--- interpret :
1256
1
1257
2
1258
3
1259
Done
1260
Интерпретация выполнена успешно
1261
--- test/source/engine/check/081-01-For.s-script :
1262
#{ initial_value : null } type 
1263
    Range = 
1264
    {
1265
        end     : 0,
1266
        counter : 0,
1267
        __init__ : fn [Range] (int : b, int : e) -> Range
1268
        {
1269
            def Range : range
1270
            
1271
            range.end = e
1272
            range.counter = b - 1
1273
            
1274
            return range
1275
        },
1276
        __iterator__ : fn (Range : range)
1277
        {
1278
            range.counter += 1
1279
            return [range.counter, range.counter < range.end]
1280
        }
1281
    } 
1282

1283
for int : i in Range(1,5)
1284
    print i
1285

1286
print "Done"
1287
--- interpret :
1288
1
1289
2
1290
3
1291
4
1292
Done
1293
Интерпретация выполнена успешно
1294
--- test/source/engine/check/081-02-For.s-script :
1295
def int :
1296
    end     = 0,
1297
    counter = 0
1298
    
1299
def auto :
1300
    __init__ = fn [self] (int : b, int : e) -> auto
1301
        {
1302
            def self : s
1303
        
1304
            s.end = e
1305
            s.counter = b - 1
1306
            
1307
            return s
1308
        },
1309
    __iterator__ = fn (self : s) -> auto 
1310
        {
1311
            s.counter += 1
1312
            return [s.counter, s.counter < s.end]
1313
        }
1314
        --- interpret :
1315
Интерпретация выполнена успешно
1316
--- test/source/engine/check/081-03-For.s-script :
1317
import "081-02-For.s-script" type range
1318

1319
def range(2,4) : i
1320

1321
print all i
1322

1323
print i.__iterator__(i)
1324
print i.__iterator__(i)
1325
print i.__iterator__(i)
1326

1327
print "Done"
1328
 --- interpret :
1329
{end:4, counter:1, __init__:<function>, __iterator__:<function>}#{origin:"variable", property:true}
1330
[2, true]
1331
[3, true]
1332
[4, false]
1333
Done
1334
Интерпретация выполнена успешно
1335
--- test/source/engine/check/081-04-For.s-script :
1336
import "081-02-For.s-script" type range
1337

1338
for int : i in range(-1,5)
1339
    print i
1340

1341
print "Done"
1342
--- interpret :
1343
-1
1344
0
1345
1
1346
2
1347
3
1348
4
1349
Done
1350
Интерпретация выполнена успешно
1351
--- test/source/engine/check/081-05-For.s-script :
1352
def int :
1353
    end     = 0,
1354
    counter = 0
1355
    
1356
def auto :
1357
    __init__ = fn [self] (int : b, int : e) -> auto
1358
        {
1359
            def self : s
1360
        
1361
            s.end = e
1362
            s.counter = b - 1
1363
            
1364
            return s
1365
        },
1366
    __iterator__ = fn (self : s) -> auto 
1367
        {
1368
            s.counter += 1
1369
            return s.counter
1370
        }
1371
        --- interpret :
1372
Интерпретация выполнена успешно
1373
--- test/source/engine/check/081-06-For.s-script :
1374
import "081-05-For.s-script" type range
1375

1376
for int : i in range(-1,5)
1377
    print i
1378

1379
print "Done"
1380
--- interpret :
1381
Ошибка: The iterator of the iteration should return values in the form of a vector in the format: [value, bool : condition]
1382
Позиция разбора: test/source/engine/check/081-06-For.s-script:3:16[3,21]
1383
Интерпретация прервана
1384
--- test/source/engine/check/081-07-For.s-script :
1385
import "081-02-For.s-script" type range
1386

1387
for int : i in range(0,0)
1388
    print i
1389

1390
print "Done"
1391
--- interpret :
1392
Done
1393
Интерпретация выполнена успешно
1394
--- test/source/engine/check/081-10-For.s-script :
1395
def auto : a = [1, 2, 3]
1396

1397
for auto : x in a
1398
    x += 1
1399

1400
print a
1401
--- interpret :
1402
[2, 3, 4]
1403
Интерпретация выполнена успешно
1404
--- test/source/engine/check/081-11-For.s-script :
1405
def auto : d = { a : 1, b : 2, c : 3}
1406

1407
for auto : x in d
1408
    x += 1
1409

1410
print d
1411
--- interpret :
1412
{a:2, b:3, c:4}
1413
Интерпретация выполнена успешно
1414
--- test/source/engine/check/082-00-While.s-script :
1415
def int : i = 1
1416

1417
while i < 5000 
1418
    i += 1
1419

1420
print i
1421
--- interpret :
1422
5000
1423
Интерпретация выполнена успешно
1424
--- test/source/engine/check/082-01-While.s-script :
1425
def int : i = 1, count = 0
1426
    
1427
while i < 500 {
1428
    if i % 2 == 0
1429
        count += i
1430
    i += 1
1431
}
1432

1433
print count
1434
--- interpret :
1435
62250
1436
Интерпретация выполнена успешно
1437
--- test/source/engine/check/083-00-DoWhile.s-script :
1438
def int : i = -10
1439

1440
do {
1441
    if i > 5000 break
1442
    i += 1
1443
}
1444
while true
1445

1446
print i
1447
--- interpret :
1448
5001
1449
Интерпретация выполнена успешно
1450
--- test/source/engine/check/085-00-Break.s-script :
1451
def int : i = 1
1452

1453
while true {
1454
    if i == 4 break
1455
    print i
1456
    i += 1
1457
}
1458

1459
print "Done"
1460
--- interpret :
1461
1
1462
2
1463
3
1464
Done
1465
Интерпретация выполнена успешно
1466
--- test/source/engine/check/085-01-Break.s-script :
1467
def int : i = 1
1468

1469
if i == 4 break
1470

1471
print "Done"
1472
--- interpret :
1473
Done
1474
Интерпретация выполнена успешно
1475
--- test/source/engine/check/085-02-Break.s-script :
1476
def int : res;
1477

1478
do
1479
{
1480
    def auto : div = fn (int : x, int : y) -> int
1481
        {
1482
            if y == 0 break
1483
            return x/y 
1484
        }
1485
    
1486
    res =  div(4,0)
1487
}
1488
while res < 0
1489
--- interpret :
1490
Ошибка: Inappropriate use of the 'break' statement
1491
Позиция разбора: test/source/engine/check/085-02-Break.s-script:7:23[7,28]
1492
Интерпретация прервана
1493
--- test/source/engine/check/086-00-Continue.s-script :
1494
def int : i = -10
1495

1496
do {
1497
    i += 1
1498
    if i < 1 continue
1499
    print i
1500
}
1501
while i < 4
1502

1503
print "Done"
1504
--- interpret :
1505
1
1506
2
1507
3
1508
4
1509
Done
1510
Интерпретация выполнена успешно
1511
--- test/source/engine/check/086-01-Continue.s-script :
1512
def int : i = 1
1513

1514
if i == 4 continue
1515

1516
print "Done"
1517
--- interpret :
1518
Done
1519
Интерпретация выполнена успешно
1520
--- test/source/engine/check/086-02-Continue.s-script :
1521
def int : res;
1522

1523
do {
1524
    def auto : div = fn (int : x, int : y) -> int
1525
        {
1526
            if y == 0 continue
1527
            return x/y 
1528
        }
1529
    
1530
    res =  div(4,0)
1531
}
1532
while res < 0
1533
--- interpret :
1534
Ошибка: Inappropriate use of the 'continue' statement
1535
Позиция разбора: test/source/engine/check/086-02-Continue.s-script:6:23[6,31]
1536
Интерпретация прервана
1537
--- test/source/engine/check/092-01-Using.s-script :
1538
def int : j = 12
1539
    
1540
for int : i in [1,2] 
1541
    using math {
1542
        if i > 1 break
1543
        print pi-i
1544
    }
1545

1546
print self
1547
--- interpret :
1548
2.141593
1549
{j:12}
1550
Интерпретация выполнена успешно
1551
--- test/source/engine/check/101-01-ArrayPush.s-script :
1552
def auto :
1553
    a = []
1554
    
1555
a ++ 1
1556

1557
print a
1558
--- interpret :
1559
[1]
1560
Интерпретация выполнена успешно
1561
--- test/source/engine/check/102-01-ArrayPop.s-script :
1562
def auto :
1563
    a = [1, 2, 3]
1564
    
1565
a --
1566

1567
print a
1568
--- interpret :
1569
[1, 2]
1570
Интерпретация выполнена успешно
1571
--- test/source/engine/check/110-01-FiberMake.s-script :
1572
import "/test/source/engine/import/primes.s-script" type Primes : p1
1573

1574
make fiber p1
1575
flow fiber p1.prime(1,100)
1576
wait fiber p1
1577
 --- interpret :
1578
1
1579
3
1580
5
1581
7
1582
11
1583
13
1584
17
1585
19
1586
23
1587
29
1588
31
1589
37
1590
41
1591
43
1592
47
1593
53
1594
59
1595
61
1596
67
1597
71
1598
73
1599
79
1600
83
1601
89
1602
97
1603
Интерпретация выполнена успешно
1604
--- test/source/engine/check/110-02-FiberMake.s-script :
1605
import "/test/source/engine/import/asynch.s-script"
1606
    : async
1607

1608
def auto : factor = fn [factor] (int : x) -> int 
1609
{
1610
    if (x <= 1)
1611
        return 1
1612

1613
    return x*factor(x-1)
1614
}
1615

1616
//auto : f = asynch.future(factor, 10)
1617
def auto : f = async.future( fn [factor] () { return factor(10) } )
1618
def int  : i = factor(10)
1619

1620
print i
1621
print i == f.get()
1622
--- interpret :
1623
3628800
1624
true
1625
Интерпретация выполнена успешно
1626
--- test/source/engine/check/110-03-FiberMake.s-script :
1627
import "/test/source/engine/import/primes.s-script" type Primes : p1
1628

1629
make fiber p1
1630
flow fiber p1.prime(1,100)
1631
wait fiber p1
1632
 --- interpret :
1633
1
1634
3
1635
5
1636
7
1637
11
1638
13
1639
17
1640
19
1641
23
1642
29
1643
31
1644
37
1645
41
1646
43
1647
47
1648
53
1649
59
1650
61
1651
67
1652
71
1653
73
1654
79
1655
83
1656
89
1657
97
1658
Интерпретация выполнена успешно
1659
--- test/source/engine/check/113-01-FiberPush.s-script :
1660
import "/test/source/engine/import/state-pi.s-script" type Pi : pi
1661

1662
make fiber pi
1663

1664
pi.pi = math.pi
1665

1666
flow fiber pi.print_pi()
1667
wait fiber pi
1668
push fiber pi
1669
flow fiber pi.print_pi()
1670
wait fiber pi
1671
--- interpret :
1672
0.0
1673
3.141593
1674
Интерпретация выполнена успешно
1675
--- test/source/engine/check/114-01-FiberPull.s-script :
1676
import "/test/source/engine/import/state-pi.s-script" type Pi : pi
1677

1678
make fiber pi
1679
flow fiber pi.pi_low()
1680
wait fiber pi
1681
print pi
1682
pull fiber pi
1683
print pi
1684
flow fiber pi.pi_hight()
1685
wait fiber pi
1686
pull fiber pi
1687
print pi
1688
--- interpret :
1689
{pi:0.0}
1690
{pi:3.142857}
1691
{pi:3.141593}
1692
Интерпретация выполнена успешно
1693
Тест работы анализатора SBL ====================================
1694
--- test/source/engine/check/000-00-Blank.s-script :
1695

1696
--- interpret :
1697
Интерпретация выполнена успешно
1698
--- test/source/engine/check/000-01-Exceeded.s-script :
1699
print a
1700
print a
1701
print a
1702
print a
1703
print a
1704
print a
1705
print a
1706
print a
1707
--- interpret :
1708
Ошибка: Variable 'a' not found
1709
Позиция разбора: test/source/engine/check/000-01-Exceeded.s-script:1:7[1,8]
1710
Ошибка: Variable 'a' not found
1711
Позиция разбора: test/source/engine/check/000-01-Exceeded.s-script:2:7[2,8]
1712
Ошибка: Variable 'a' not found
1713
Позиция разбора: test/source/engine/check/000-01-Exceeded.s-script:3:7[3,8]
1714
Ошибка: Variable 'a' not found
1715
Позиция разбора: test/source/engine/check/000-01-Exceeded.s-script:4:7[4,8]
1716
Ошибка: Variable 'a' not found
1717
Позиция разбора: test/source/engine/check/000-01-Exceeded.s-script:5:7[5,8]
1718
Ошибка: The number of errors has exceeded the allowable limit
1719
Позиция разбора: test/source/engine/check/000-01-Exceeded.s-script:5:7[5,8]
1720
Интерпретация прервана
1721
--- test/source/engine/check/000-02-TerminalSC.s-script :
1722
print 1; print 2; 
1723
--- interpret :
1724
Интерпретация выполнена успешно
1725
--- test/source/engine/check/001-00-PushConstant.s-script :
1726
print 1
1727
--- interpret :
1728
Интерпретация выполнена успешно
1729
--- test/source/engine/check/001-01-PushConstant.s-script :
1730
print "Hello, World!"
1731
--- interpret :
1732
Интерпретация выполнена успешно
1733
--- test/source/engine/check/001-02-PushConstant.s-script :
1734
print 3.14
1735
--- interpret :
1736
Интерпретация выполнена успешно
1737
--- test/source/engine/check/001-03-PushConstant.s-script :
1738
print true
1739
print false
1740
--- interpret :
1741
Интерпретация выполнена успешно
1742
--- test/source/engine/check/001-05-PushConstant.s-script :
1743
print null
1744
--- interpret :
1745
Интерпретация выполнена успешно
1746
--- test/source/engine/check/002-00-PushVariable.s-script :
1747
print a
1748
--- interpret :
1749
Ошибка: Variable 'a' not found
1750
Позиция разбора: test/source/engine/check/002-00-PushVariable.s-script:1:7[1,8]
1751
Интерпретация выполнена успешно
1752
--- test/source/engine/check/003-00-ObjectElement.s-script :
1753
print math.pix
1754
--- interpret :
1755
Ошибка: Property 'pix' not found in 'math'
1756
Позиция разбора: test/source/engine/check/003-00-ObjectElement.s-script:1:12[1,15]
1757
Интерпретация выполнена успешно
1758
--- test/source/engine/check/003-01-ObjectElement.s-script :
1759
import test : t
1760

1761
print t.test_string
1762
call t.set_test_string("new value of test string")
1763
print t.test_string
1764
--- interpret :
1765
Интерпретация выполнена успешно
1766
--- test/source/engine/check/003-02-ObjectElement.s-script :
1767
import test : t = { test_string : "initiated value of test string" }
1768

1769
print t.test_string
1770
--- interpret :
1771
Ошибка: Using a setter 'test_string' when assigning an object is not supported
1772
Позиция разбора: test/source/engine/check/003-02-ObjectElement.s-script:1:21[1,32]
1773
Интерпретация прервана
1774
--- test/source/engine/check/003-03-ObjectElement.s-script :
1775
import test : t
1776

1777
print t.test_string
1778
t.test_string = "new value of test string"
1779
print t.test_string
1780
--- interpret :
1781
Интерпретация выполнена успешно
1782
--- test/source/engine/check/003-04-ObjectElement.s-script :
1783
print math.spec.origin
1784
--- interpret :
1785
Интерпретация выполнена успешно
1786
--- test/source/engine/check/004-00-FunctionCall.s-script :
1787
print math.sin(0.0)
1788
--- interpret :
1789
Интерпретация выполнена успешно
1790
--- test/source/engine/check/004-01-FunctionCall.s-script :
1791
print math.cos(0.0)
1792
--- interpret :
1793
Интерпретация выполнена успешно
1794
--- test/source/engine/check/004-02-FunctionCall.s-script :
1795
print math.sin()
1796
--- interpret :
1797
Ошибка: The function call 'sin' contains an incorrect number of arguments
1798
Позиция разбора: test/source/engine/check/004-02-FunctionCall.s-script:1:12[1,15]
1799
Интерпретация выполнена успешно
1800
--- test/source/engine/check/004-03-FunctionCall.s-script :
1801
print math.pi()
1802
--- interpret :
1803
Ошибка: Invalid type conversion from float to function of variable 'pi'
1804
Позиция разбора: test/source/engine/check/004-03-FunctionCall.s-script:1:12[1,14]
1805
Интерпретация выполнена успешно
1806
--- test/source/engine/check/004-04-FunctionCall.s-script :
1807
print math.sin(0)
1808
--- interpret :
1809
Интерпретация выполнена успешно
1810
--- test/source/engine/check/004-05-FunctionCall.s-script :
1811
print math.sin(true)
1812
--- interpret :
1813
Ошибка: Invalid type conversion from bool to float of internal variable
1814
Позиция разбора: test/source/engine/check/004-05-FunctionCall.s-script:1:16[1,20]
1815
Интерпретация прервана
1816
--- test/source/engine/check/006-00-Print.s-script :
1817
print math
1818
--- interpret :
1819
Интерпретация выполнена успешно
1820
--- test/source/engine/check/006-01-Print.s-script :
1821
print all math
1822
--- interpret :
1823
Интерпретация выполнена успешно
1824
--- test/source/engine/check/009-01-ArrayElement.s-script :
1825
#{ initial_value : 5 } : a
1826

1827
print a[0]
1828
--- interpret :
1829
Ошибка: Invalid type int for indexing. The indexing operation is only available for arrays and objects
1830
Позиция разбора: test/source/engine/check/009-01-ArrayElement.s-script:3:7[3,8]
1831
Интерпретация прервана
1832
--- test/source/engine/check/009-02-ArrayElement.s-script :
1833
#{ initial_value : null } : a = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
1834

1835
print a
1836
print a[0]
1837
print a[1]
1838
print a[2]
1839
print a[1][2]
1840
--- interpret :
1841
Интерпретация выполнена успешно
1842
--- test/source/engine/check/009-03-ArrayElement.s-script :
1843
# {initial_value : null} type auto
1844

1845
def auto : x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
1846

1847
print x
1848
print x[4,1]
1849
 --- interpret :
1850
Ошибка: Произошло исключение в методе Array::getValueByIndex при обработке оператора: {semantics : "", code : 1, param : "1"}
1851
Описание исключения: Out of indexes count
1852
Позиция разбора: test/source/engine/check/009-03-ArrayElement.s-script:6:11[6,12]
1853
Интерпретация прервана
1854
--- test/source/engine/check/009-04-ArrayElement.s-script :
1855
# {initial_value : null} type auto
1856

1857
def auto : x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
1858

1859
print x
1860
print x[4]
1861
print x[4][1]
1862
 --- interpret :
1863
Ошибка: Invalid type int for indexing. The indexing operation is only available for arrays and objects
1864
Позиция разбора: test/source/engine/check/009-04-ArrayElement.s-script:7:8[7,9]
1865
Интерпретация прервана
1866
--- test/source/engine/check/009-05-ArrayElement.s-script :
1867
print math["pi"]
1868
print math[0]
1869
print math["pi-pi"]
1870
--- interpret :
1871
Интерпретация выполнена успешно
1872
--- test/source/engine/check/009-06-ArrayElement.s-script :
1873
def auto : d = {a : true}
1874

1875
d["a"] = math.pi * 2
1876
d["b"] = ""
1877
d["c"] = true
1878

1879
print d
1880
--- interpret :
1881
Ошибка: Invalid type conversion from float to bool of internal variable
1882
Позиция разбора: test/source/engine/check/009-06-ArrayElement.s-script:3:10[3,21]
1883
Интерпретация прервана
1884
--- test/source/engine/check/009-07-ArrayElement.s-script :
1885
def object : d
1886

1887
d["a"] = math.pi / 2
1888
d["b"] = ""
1889
d["c"] = true
1890

1891
print d
1892
--- interpret :
1893
Интерпретация выполнена успешно
1894
--- test/source/engine/check/010-00-ObjectStructure.s-script :
1895
print all {a: true, a: "b"}
1896
--- interpret :
1897
Ошибка: Duplicate object element name 'a'
1898
Позиция разбора: test/source/engine/check/010-00-ObjectStructure.s-script:1:21[1,22]
1899
Интерпретация прервана
1900
--- test/source/engine/check/012-00-Import.s-script :
1901
import test : t
1902

1903
print all t
1904
--- interpret :
1905
Интерпретация выполнена успешно
1906
--- test/source/engine/check/012-01-Import.s-script :
1907
import test type test
1908

1909
def test : t
1910

1911
print all t
1912
--- interpret :
1913
Интерпретация выполнена успешно
1914
--- test/source/engine/check/012-02-Import.s-script :
1915
import test type test = {test_string : "initiated in import statement"}
1916

1917
def test : t
1918

1919
print all t
1920
--- interpret :
1921
Ошибка: Using a setter 'test_string' when assigning an object is not supported
1922
Позиция разбора: test/source/engine/check/012-02-Import.s-script:1:26[1,37]
1923
Интерпретация прервана
1924
--- test/source/engine/check/012-03-Import-sample.s-script :
1925
#{initial_value : ""} : first_name, last_name
1926
#{initial_value : 10} : year_of_birth
1927
--- interpret :
1928
Интерпретация выполнена успешно
1929
--- test/source/engine/check/012-04-Import.s-script :
1930
import "012-03-Import-sample.s-script" :
1931
        p1 = { first_name : "Иванов", last_name : "Иван" },
1932
        p2 = { first_name : "Петров", last_name : "Пётр", year_of_birth : 1998 }
1933

1934
print "1"
1935
print all p1
1936
print all p2
1937

1938
p1.year_of_birth = 2002
1939
print "2"
1940
print all p1
1941
print all p2
1942

1943
p1 = {first_name : "Сидоров", last_name : "Сидор"}
1944
print "3"
1945
print all p1
1946
print all p2
1947

1948
p1 = p2
1949
print "4"
1950
print all p1
1951
print all p2
1952

1953
p2 = {first_name : "Антонов", last_name : "Антон"}
1954
print "5"
1955
print all p1
1956
print all p2
1957
--- interpret :
1958
Интерпретация выполнена успешно
1959
--- test/source/engine/check/012-06-Import.s-script :
1960
import test1 type test
1961

1962
print all test
1963
--- interpret :
1964
Сбой! Module 'test1' was not found
1965
Ошибка: Unable to load module 'test1'
1966
Позиция разбора: test/source/engine/check/012-06-Import.s-script:1:8[1,13]
1967
Интерпретация выполнена успешно
1968
--- test/source/engine/check/012-07-Import.s-script :
1969
import "015-03-Announcement.s-script" : test
1970

1971
test.x = 3
1972
test.i = 2
1973
--- interpret :
1974
Ошибка: Property 'i' is hidden in 'test' and have not getter 'get_i'
1975
Позиция разбора: test/source/engine/check/012-07-Import.s-script:4:6[4,7]
1976
Интерпретация выполнена успешно
1977
--- test/source/engine/check/012-08-Import.s-script :
1978
import test : t
1979

1980
print t.fibers
1981
--- interpret :
1982
Интерпретация выполнена успешно
1983
--- test/source/engine/check/013-00-Contract.s-script :
1984
#{} contract bool
1985

1986
print all bool
1987
--- interpret :
1988
Интерпретация выполнена успешно
1989
--- test/source/engine/check/013-01-Contract.s-script :
1990
#{ initial_value : null }  type auto
1991
#{ initial_value : true }  type bool
1992
#{ initial_value : "" }    type string
1993
#{ initial_value : 0 }     type int
1994
#{ initial_value : 0.0 }   type float
1995

1996
print all auto
1997
print all bool
1998
print all string
1999
print all int
2000
print all float
2001
 --- interpret :
2002
Интерпретация выполнена успешно
2003
--- test/source/engine/check/013-02-Contract.s-script :
2004
#{ initial_value : "", mutable : true } contract varstring1
2005
#{ initial_value : ""} #{mutable : true } contract varstring2
2006

2007
print all varstring1
2008
print all varstring2
2009
--- interpret :
2010
Интерпретация выполнена успешно
2011
--- test/source/engine/check/013-03-Contract.s-script :
2012
#{mutable : true } import test contract vartest 
2013

2014
print all vartest
2015
--- interpret :
2016
Интерпретация выполнена успешно
2017
--- test/source/engine/check/013-04-Contract.s-script :
2018
#{doc : true } import test contract doctest
2019
--- interpret :
2020
Интерпретация выполнена успешно
2021
--- test/source/engine/check/013-05-Contract.s-script :
2022
def math.cos(0) contract varcos 
2023
--- interpret :
2024
Интерпретация выполнена успешно
2025
--- test/source/engine/check/013-06-Contract.s-script :
2026
#{ test : true } contract test_type
2027

2028
def test_type #{ initial_value : 0.0, mutable : true } import test type Flex
2029

2030
print all test_type
2031
print all Flex
2032
--- interpret :
2033
Ошибка: Invalid addition of a non-scalar type to a scalar sequence
2034
Позиция разбора: test/source/engine/check/013-06-Contract.s-script:3:63[3,67]
2035
Интерпретация выполнена успешно
2036
--- test/source/engine/check/013-07-Contract.s-script :
2037
#{ test : true } contract test_type
2038

2039
def test_type import test #{ initial_value : 0.0, mutable : true } type Flex
2040

2041
print all test_type
2042
print all Flex
2043
--- interpret :
2044
Ошибка: Invalid addition of a scalar type to a non-scalar sequence
2045
Позиция разбора: test/source/engine/check/013-07-Contract.s-script:3:30[3,43]
2046
Интерпретация выполнена успешно
2047
--- test/source/engine/check/015-00-Announcement.s-script :
2048
#{ initial_value : true } contract bool 
2049

2050
def bool : ok
2051

2052
print all ok
2053
--- interpret :
2054
Интерпретация выполнена успешно
2055
--- test/source/engine/check/015-01-Announcement.s-script :
2056
#{ initial_value : 1 }    contract int
2057
#{ initial_value : true } contract bool
2058

2059
def int bool : ok
2060

2061
print all ok
2062
--- interpret :
2063
Ошибка: Type overriding
2064
Позиция разбора: test/source/engine/check/015-01-Announcement.s-script:4:9[4,13]
2065
Интерпретация выполнена успешно
2066
--- test/source/engine/check/015-02-Announcement.s-script :
2067
#{ initial_value : true, mutable : true } :
2068
    ok,
2069
    error
2070

2071
print all ok
2072
print all error
2073
--- interpret :
2074
Интерпретация выполнена успешно
2075
--- test/source/engine/check/015-03-Announcement.s-script :
2076
def hidden int : i = 1
2077
def int : x = 3
2078

2079
print all i--- interpret :
2080
Интерпретация выполнена успешно
2081
--- test/source/engine/check/015-04-Announcement.s-script :
2082
{
2083
    def hidden int : i = 1
2084
}--- interpret :
2085
Ошибка: The internal variables of the module are already hidden
2086
Позиция разбора: test/source/engine/check/015-04-Announcement.s-script:2:9[2,15]
2087
Интерпретация выполнена успешно
2088
--- test/source/engine/check/016-00-Declaration.s-script :
2089
#{ initial_value : true } contract bool 
2090

2091
def bool : ok, ok
2092
--- interpret :
2093
Ошибка: The name 'ok' has already been declared in the local scope
2094
Позиция разбора: test/source/engine/check/016-00-Declaration.s-script:3:16[3,18]
2095
Интерпретация выполнена успешно
2096
--- test/source/engine/check/016-01-Declaration.s-script :
2097
#{ initial_value : true } contract bool
2098

2099
def bool : ok
2100
def bool : ok
2101
--- interpret :
2102
Ошибка: The name 'ok' has already been declared in the local scope
2103
Позиция разбора: test/source/engine/check/016-01-Declaration.s-script:4:12[4,14]
2104
Интерпретация выполнена успешно
2105
--- test/source/engine/check/016-02-Declaration.s-script :
2106
#{ initial_value : true } contract bool
2107

2108
def bool : ok
2109
{ def bool : ok }
2110
--- interpret :
2111
Интерпретация выполнена успешно
2112
--- test/source/engine/check/016-03-Declaration.s-script :
2113
#{initial_value : null} : x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
2114

2115
print x
2116
--- interpret :
2117
Интерпретация выполнена успешно
2118
--- test/source/engine/check/017-00-Initialize.s-script :
2119
#{ mutable : true } contract var
2120
#{ initial_value : 0 } contract int 
2121

2122
def var int : i = 14
2123

2124
print all i
2125
--- interpret :
2126
Интерпретация выполнена успешно
2127
--- test/source/engine/check/017-01-Initialize.s-script :
2128
#{ mutable : true } contract var
2129

2130
def var import test : test = {test_string : 14}
2131

2132
print all test
2133
--- interpret :
2134
Ошибка: Using a setter 'test_string' when assigning an object is not supported
2135
Позиция разбора: test/source/engine/check/017-01-Initialize.s-script:3:31[3,42]
2136
Интерпретация прервана
2137
--- test/source/engine/check/017-02-Initialize.s-script :
2138
#{ mutable : true } contract var 
2139

2140
def var import test : test = {missing_element : 14}
2141

2142
print all test
2143
--- interpret :
2144
Ошибка: Element 'missing_element' was not found in the target structure
2145
Позиция разбора: test/source/engine/check/017-02-Initialize.s-script:3:31[3,46]
2146
Интерпретация прервана
2147
--- test/source/engine/check/017-03-Initialize.s-script :
2148
#{ initial_value : null } : test = {a : "a", i : 14}
2149

2150
print all test
2151
--- interpret :
2152
Интерпретация выполнена успешно
2153
--- test/source/engine/check/017-04-Initialize.s-script :
2154
#{ initial_value : null } contract auto 
2155

2156
def auto : i = 14
2157

2158
print all i
2159
--- interpret :
2160
Интерпретация выполнена успешно
2161
--- test/source/engine/check/017-05-Initialize.s-script :
2162
def auto : i = math.cos(0.2)
2163

2164
print all math.acos(i)
2165
--- interpret :
2166
Интерпретация выполнена успешно
2167
--- test/source/engine/check/018-01-Assignment.s-script :
2168
def auto : x = 12.0
2169

2170
x = 13
2171

2172
print x
2173
--- interpret :
2174
Интерпретация выполнена успешно
2175
--- test/source/engine/check/023-00-AssignmentAddition.s-script :
2176
#{ initial_value : 0, mutable : true } : i
2177

2178
print i
2179
i+=2
2180
print i
2181
--- interpret :
2182
Интерпретация выполнена успешно
2183
--- test/source/engine/check/023-01-AssignmentAddition.s-script :
2184
#{ initial_value : 0, mutable : true } : i
2185

2186
print i
2187
i += x
2188
print i
2189
--- interpret :
2190
Ошибка: Variable 'x' not found
2191
Позиция разбора: test/source/engine/check/023-01-AssignmentAddition.s-script:4:6[4,7]
2192
Интерпретация выполнена успешно
2193
--- test/source/engine/check/023-02-AssignmentAddition.s-script :
2194
def auto : a = [1, 2]
2195

2196
a *= 1
2197
a *= 2
2198
a *= 3
2199

2200
print a
2201
--- interpret :
2202
Интерпретация выполнена успешно
2203
--- test/source/engine/check/024-00-AssignmentSubtraction.s-script :
2204
#{ initial_value : 0, mutable : true } : i
2205

2206
print i
2207
i -= 2
2208
print i
2209
--- interpret :
2210
Интерпретация выполнена успешно
2211
--- test/source/engine/check/025-00-AssignmentMultiplication.s-script :
2212
#{ initial_value : 10, mutable : true } : i
2213

2214
print i
2215
i *= 5
2216
print i
2217
--- interpret :
2218
Интерпретация выполнена успешно
2219
--- test/source/engine/check/026-00-AssignmentDivision.s-script :
2220
#{ initial_value : 10, mutable : true } : i
2221

2222
print i
2223
i /= 5
2224
print i
2225
--- interpret :
2226
Интерпретация выполнена успешно
2227
--- test/source/engine/check/027-00-AssignmentModulo.s-script :
2228
#{ initial_value : 13, mutable : true } : i
2229

2230
print i
2231
i %= 5
2232
print i
2233
--- interpret :
2234
Интерпретация выполнена успешно
2235
--- test/source/engine/check/031-00-FunctionDefinition.s-script :
2236
#{ initial_value : null } type auto 
2237
#{ initial_value : 0 }    type int 
2238

2239
def int  : x = 12
2240
def auto : f = fn [x] (int : y) { print x+y }
2241

2242
x = -10
2243

2244
call f(4)
2245
--- interpret :
2246
Интерпретация выполнена успешно
2247
--- test/source/engine/check/031-01-FunctionDefinition.s-script :
2248
#{ initial_value : null } type auto 
2249
#{ initial_value : 0 }    type int 
2250

2251
def int  : x = 12
2252
def auto : f = fn [x1] (int : y) { print x+y }
2253

2254
call f(4)
2255
--- interpret :
2256
Ошибка: Variable 'x1' not found
2257
Позиция разбора: test/source/engine/check/031-01-FunctionDefinition.s-script:5:20[5,22]
2258
Интерпретация выполнена успешно
2259
--- test/source/engine/check/031-02-FunctionDefinition.s-script :
2260
#{ initial_value : null } type auto 
2261
#{ initial_value : 0 }    type int 
2262

2263
def int  : x = 12
2264
def auto : f = fn [x] (int : y) -> int { return x+y }
2265

2266
print f(4)
2267
--- interpret :
2268
Интерпретация выполнена успешно
2269
--- test/source/engine/check/031-03-FunctionDefinition.s-script :
2270
#{ initial_value : null } type auto 
2271
#{ initial_value : 0 }    type int
2272

2273
def int  : x = 12
2274
def auto : f = fn [x] (int : y1) -> int { return x+y }
2275

2276
print f(4)
2277
--- interpret :
2278
Ошибка: Variable 'y' not found
2279
Позиция разбора: test/source/engine/check/031-03-FunctionDefinition.s-script:5:52[5,53]
2280
Интерпретация выполнена успешно
2281
--- test/source/engine/check/031-04-FunctionDefinition.s-script :
2282
#{ initial_value : null } type auto 
2283
#{ initial_value : 0 }    type int
2284

2285
def int  : x = 12
2286
def auto : f = fn [x] (int : y) -> auto { return x+y }
2287

2288
x = -10
2289

2290
print f(4)
2291
print x
2292
--- interpret :
2293
Интерпретация выполнена успешно
2294
--- test/source/engine/check/031-05-FunctionDefinition.s-script :
2295
#{ initial_value : null } type auto 
2296
#{ initial_value : 0 }    type int
2297

2298
def int  : x = 12
2299
def auto : f = fn [x] (int : y) -> int 
2300
            {
2301
                if (y > 0)
2302
                    return x+y
2303
                print "Wrong way"
2304
                return 0
2305
            }
2306

2307
print f(5)
2308
--- interpret :
2309
Интерпретация выполнена успешно
2310
--- test/source/engine/check/031-06-FunctionDefinition.s-script :
2311
#{ initial_value : null } type auto 
2312
#{ initial_value : 0 }    type int
2313

2314
def int  : x = 12
2315
def auto : f = fn [x] (int : y) -> int 
2316
            {
2317
                if (y > 0) {
2318
                    return x+y
2319
                }
2320
                print "Wrong way"
2321
                return 0
2322
            }
2323
--- interpret :
2324
Интерпретация выполнена успешно
2325
--- test/source/engine/check/031-07-FunctionDefinition.s-script :
2326
#{ initial_value : null } type auto 
2327
#{ initial_value : 0 }    type int
2328

2329
def int  : x = 12
2330
def auto : f = fn [x, auto, int] (int : y) -> int 
2331
            {
2332
                def auto : f = fn [x,y] () -> int { return x+y }
2333
                return f()
2334
            }
2335

2336
print f(5)
2337
--- interpret :
2338
Интерпретация выполнена успешно
2339
--- test/source/engine/check/031-08-FunctionDefinition.s-script :
2340
import "031-06-FunctionDefinition.s-script" type m
2341

2342
print m.f(2)
2343
--- interpret :
2344
Интерпретация выполнена успешно
2345
--- test/source/engine/check/031-09-FunctionDefinition.s-script :
2346
#{ initial_value : null } type auto 
2347
#{ initial_value : 0 }    type int
2348

2349
def int : m1 = 3, m2 = 5
2350

2351
def auto : mult = fn [] (int : x, int : y) -> int { return (x*y) }
2352

2353
print mult(m1, m2)
2354
--- interpret :
2355
Интерпретация выполнена успешно
2356
--- test/source/engine/check/031-10-FunctionDefinition.s-script :
2357
def auto : factor = fn [factor] (int : x) -> int 
2358
                {
2359
                    if (x <= 1)
2360
                        return 1
2361
    
2362
                    return x*factor(x-1)
2363
                }
2364

2365
print factor(10)
2366
--- interpret :
2367
Интерпретация выполнена успешно
2368
--- test/source/engine/check/031-11-FunctionDefinition.s-script :
2369
import "031-10-FunctionDefinition.s-script" type f
2370

2371
print f.factor(5)
2372
--- interpret :
2373
Интерпретация выполнена успешно
2374
--- test/source/engine/check/031-12-FunctionDefinition.s-script :
2375
def auto :
2376
    x = 1,
2377
    factor = fn [factor] (int : x) -> int
2378
        {
2379
            if (x <= 1)
2380
                return 1
2381

2382
            return x*factor(x-1)
2383
        },
2384
    y = 2
2385

2386
print factor(10)
2387
--- interpret :
2388
Интерпретация выполнена успешно
2389
--- test/source/engine/check/031-13-FunctionDefinition.s-script :
2390
#{ initial_value : null } type auto 
2391
#{ initial_value : 0 }    type int 
2392

2393
def int  : x = 12
2394
def auto : f = fn [x] (int : x) { print x }
2395

2396
call f(4)
2397
--- interpret :
2398
Ошибка: The argument and closure have the same names
2399
Позиция разбора: test/source/engine/check/031-13-FunctionDefinition.s-script:5:30[5,31]
2400
Интерпретация прервана
2401
--- test/source/engine/check/031-14-FunctionDefinition.s-script :
2402
#{ initial_value : null } type auto 
2403
#{ initial_value : 0 }    type int 
2404

2405
def int  : x = 12,
2406
       y = 2
2407
       
2408
def auto : f = fn [*] () -> int { return x+y }
2409

2410
print f()
2411
--- interpret :
2412
Интерпретация выполнена успешно
2413
--- test/source/engine/check/031-15-FunctionDefinition.s-script :
2414
fn factor(int : x) -> int 
2415
{
2416
    if x <= 1
2417
        return 1
2418

2419
    return x*factor(x-1)
2420
}
2421

2422
print factor(5)
2423
--- interpret :
2424
Интерпретация выполнена успешно
2425
--- test/source/engine/check/035-00-Return.s-script :
2426

2427
return
2428
--- interpret :
2429
Ошибка: Inappropriate use of the return statement
2430
Позиция разбора: test/source/engine/check/035-00-Return.s-script:2:1[2,7]
2431
Интерпретация выполнена успешно
2432
--- test/source/engine/check/035-01-Return.s-script :
2433
import "035-00-Return.s-script" type ret
2434

2435
--- interpret :
2436
Ошибка: Inappropriate use of the return statement
2437
Позиция разбора: test/source/engine/check/035-00-Return.s-script:2:1[2,7]
2438
Интерпретация выполнена успешно
2439
--- test/source/engine/check/041-01-Plus.s-script :
2440
print +1
2441

2442
#{ initial_value : 2 } : ok
2443

2444
print +ok
2445
--- interpret :
2446
Интерпретация выполнена успешно
2447
--- test/source/engine/check/041-02-Plus.s-script :
2448
print +1.0
2449

2450
#{ initial_value : 2.0 } : ok
2451

2452
print +ok
2453
--- interpret :
2454
Интерпретация выполнена успешно
2455
--- test/source/engine/check/041-03-Plus.s-script :
2456
print +""
2457
--- interpret :
2458
Ошибка: The Plus operation for type string is not defined
2459
Позиция разбора: test/source/engine/check/041-03-Plus.s-script:1:7[1,10]
2460
Интерпретация выполнена успешно
2461
--- test/source/engine/check/042-01-Minus.s-script :
2462
#{ initial_value : -2 } : ok
2463

2464
print -ok
2465
--- interpret :
2466
Интерпретация выполнена успешно
2467
--- test/source/engine/check/042-02-Minus.s-script :
2468
#{ initial_value : -2.0 } : ok
2469

2470
print ok
2471
print -ok
2472
--- interpret :
2473
Интерпретация выполнена успешно
2474
--- test/source/engine/check/042-03-Minus.s-script :
2475
print -""
2476
--- interpret :
2477
Ошибка: The Minus operation for type string is not defined
2478
Позиция разбора: test/source/engine/check/042-03-Minus.s-script:1:7[1,10]
2479
Интерпретация выполнена успешно
2480
--- test/source/engine/check/043-01-Not.s-script :
2481
#{ initial_value : true } : ok
2482

2483
print !ok
2484
--- interpret :
2485
Интерпретация выполнена успешно
2486
--- test/source/engine/check/043-02-Not.s-script :
2487
#{ initial_value : 0 } : ok
2488

2489
print !ok
2490
--- interpret :
2491
Ошибка: Invalid type conversion from int to bool of variable 'ok'
2492
Позиция разбора: test/source/engine/check/043-02-Not.s-script:1:26[1,28]
2493
Интерпретация выполнена успешно
2494
--- test/source/engine/check/051-01-Or.s-script :
2495
print true || true
2496
print true || false
2497
print false || true
2498
print false || false
2499
--- interpret :
2500
Интерпретация выполнена успешно
2501
--- test/source/engine/check/051-02-Or.s-script :
2502
print true || 1
2503
--- interpret :
2504
Ошибка: Invalid type conversion from int to bool of internal variable
2505
Позиция разбора: test/source/engine/check/051-02-Or.s-script:1:15[1,16]
2506
Интерпретация выполнена успешно
2507
--- test/source/engine/check/051-03-Or.s-script :
2508
print true || null
2509
--- interpret :
2510
Ошибка: Invalid type conversion from null to bool of internal variable
2511
Позиция разбора: test/source/engine/check/051-03-Or.s-script:1:15[1,19]
2512
Интерпретация выполнена успешно
2513
--- test/source/engine/check/051-04-Or.s-script :
2514
print null || false
2515
--- interpret :
2516
Ошибка: Invalid type conversion from null to bool of internal variable
2517
Позиция разбора: test/source/engine/check/051-04-Or.s-script:1:7[1,11]
2518
Интерпретация выполнена успешно
2519
--- test/source/engine/check/052-01-And.s-script :
2520
print true && true
2521
print true && false
2522
print false && true
2523
print false && false
2524
--- interpret :
2525
Интерпретация выполнена успешно
2526
--- test/source/engine/check/053-01-Equal.s-script :
2527
print true == true
2528
print true == false
2529
print 1 == 1
2530
print 1 == 2
2531
print 1. == 1
2532
print 1. == 2
2533
print 1 == 1.
2534
print 1 == 2.
2535
print "one" == "one"
2536
print "one" == "two"
2537
--- interpret :
2538
Интерпретация выполнена успешно
2539
--- test/source/engine/check/054-01-NotEqual.s-script :
2540
print true != true
2541
print true != false
2542
print 1 != 1
2543
print 1 != 2
2544
print 1. != 1
2545
print 1. != 2
2546
print 1 != 1.
2547
print 1 != 2.
2548
print "one" != "one"
2549
print "one" != "two"
2550
--- interpret :
2551
Интерпретация выполнена успешно
2552
--- test/source/engine/check/055-01-Less.s-script :
2553
print 1 < 1
2554
print 1 < 2
2555
print 1. < 1
2556
print 1. < 2
2557
print 1 < 1.
2558
print 1 < 2.
2559
print "one" < "one"
2560
print "one" < "two"
2561
--- interpret :
2562
Интерпретация выполнена успешно
2563
--- test/source/engine/check/055-02-Less.s-script :
2564
print true < true
2565
--- interpret :
2566
Ошибка: For operation Less, the use of types bool and bool is not provided
2567
Позиция разбора: test/source/engine/check/055-02-Less.s-script:1:7[1,18]
2568
Интерпретация выполнена успешно
2569
--- test/source/engine/check/055-03-Less.s-script :
2570

2571
print 0 < //null
2572
        (4 < null 
2573
            ? true 
2574
            : false)
2575
--- interpret :
2576
Ошибка: For operation Less, the use of types bool and bool is not provided
2577
Позиция разбора: test/source/engine/check/055-03-Less.s-script:2:7[5,21]
2578
Интерпретация выполнена успешно
2579
--- test/source/engine/check/056-01-LessOrEqual.s-script :
2580
print 1 <= 1
2581
print 1 <= 2
2582
print 1. <= 1
2583
print 1. <= 2
2584
print 1 <= 1.
2585
print 1 <= 2.
2586
print "one" <= "one"
2587
print "one" <= "two"
2588
--- interpret :
2589
Интерпретация выполнена успешно
2590
--- test/source/engine/check/057-01-More.s-script :
2591
print 1 > 1
2592
print 1 > 2
2593
print 1. > 1
2594
print 1. > 2
2595
print 1 > 1.
2596
print 1 > 2.
2597
print "one" > "one"
2598
print "one" > "two"
2599
--- interpret :
2600
Интерпретация выполнена успешно
2601
--- test/source/engine/check/058-01-MoreOrEqual.s-script :
2602
print 1 >= 1
2603
print 1 >= 2
2604
print 1. >= 1
2605
print 1. >= 2
2606
print 1 >= 1.
2607
print 1 >= 2.
2608
print "one" >= "one"
2609
print "one" >= "two"
2610
--- interpret :
2611
Интерпретация выполнена успешно
2612
--- test/source/engine/check/061-01-Addition.s-script :
2613
print 1 + 2
2614
print 1. + 2
2615
print 1 + 2.
2616
print 1. + 2.
2617
print "one" + "one"
2618
print "one" + true
2619
print "one" + 2
2620
print "one" + 2.
2621
print false + "one"
2622
print 1 + "one"
2623
print 1. + "one"
2624
--- interpret :
2625
Интерпретация выполнена успешно
2626
--- test/source/engine/check/061-02-Addition.s-script :
2627
print 1 + null
2628
--- interpret :
2629
Ошибка: For operation Addition, the use of types int and null is not provided
2630
Позиция разбора: test/source/engine/check/061-02-Addition.s-script:1:7[1,15]
2631
Интерпретация выполнена успешно
2632
--- test/source/engine/check/061-03-Addition.s-script :
2633
def int :
2634
    op1 = 3,
2635
    op2 = 5
2636
print op1 + op2
2637
--- interpret :
2638
Интерпретация выполнена успешно
2639
--- test/source/engine/check/062-01-Subtraction.s-script :
2640
print 1 - 2
2641
print 1. - 2
2642
print 1 - 2.
2643
print 1. - 2.
2644
--- interpret :
2645
Интерпретация выполнена успешно
2646
--- test/source/engine/check/062-02-Subtraction.s-script :
2647
print "1" - 2
2648
--- interpret :
2649
Ошибка: For operation Subtraction, the use of types string and string is not provided
2650
Позиция разбора: test/source/engine/check/062-02-Subtraction.s-script:1:7[1,14]
2651
Интерпретация выполнена успешно
2652
--- test/source/engine/check/063-01-Multiplication.s-script :
2653
print 3 * 2
2654
print 3. * 2
2655
print 3 * 2.
2656
print 3. * 2.
2657
--- interpret :
2658
Интерпретация выполнена успешно
2659
--- test/source/engine/check/064-01-Division.s-script :
2660
print 3 / 2
2661
print 3. / 2
2662
print 3 / 2.
2663
print 3. / 2.
2664
--- interpret :
2665
Интерпретация выполнена успешно
2666
--- test/source/engine/check/064-02-Division.s-script :
2667
print 3 / 0
2668
--- interpret :
2669
Предупреждение: Danger of error 'Деление на ноль'
2670
Позиция разбора: test/source/engine/check/064-02-Division.s-script:1:9[1,10]
2671
Интерпретация выполнена успешно
2672
--- test/source/engine/check/064-03-Division.s-script :
2673
print 3.0 / 0.0
2674
--- interpret :
2675
Предупреждение: Danger of error 'Деление на ноль'
2676
Позиция разбора: test/source/engine/check/064-03-Division.s-script:1:11[1,12]
2677
Интерпретация выполнена успешно
2678
--- test/source/engine/check/065-01-Modulo.s-script :
2679
print 3 % 2
2680
--- interpret :
2681
Интерпретация выполнена успешно
2682
--- test/source/engine/check/065-02-Modulo.s-script :
2683
#{ built_in_type : 2 } :
2684
    a = 13,
2685
    b = 3
2686

2687
print (a/b)*b + a%b == a
2688
--- interpret :
2689
Интерпретация выполнена успешно
2690
--- test/source/engine/check/066-01-Power.s-script :
2691
print 3 ^ 2
2692
print 3.5 ^ 2
2693
print 3.5 ^ 2.
2694
--- interpret :
2695
Интерпретация выполнена успешно
2696
--- test/source/engine/check/071-02-Ternary.s-script :
2697
print false ? "false" : "true"
2698
--- interpret :
2699
Интерпретация выполнена успешно
2700
--- test/source/engine/check/071-03-Ternary.s-script :
2701
print false ? "false" : true ? "true" : "false"
2702
--- interpret :
2703
Интерпретация выполнена успешно
2704
--- test/source/engine/check/071-04-Ternary.s-script :
2705
print true ? true ? "true" : "false" : "false"
2706
--- interpret :
2707
Интерпретация выполнена успешно
2708
--- test/source/engine/check/072-01-If.s-script :
2709
if true
2710
    print "Ok"
2711
print "Done"
2712
--- interpret :
2713
Интерпретация выполнена успешно
2714
--- test/source/engine/check/072-02-If.s-script :
2715
if false
2716
    print "Wrong"
2717
print "Done"
2718
--- interpret :
2719
Интерпретация выполнена успешно
2720
--- test/source/engine/check/072-03-If.s-script :
2721
if false
2722
    print "Wrong"
2723
else
2724
    print "Ok"
2725
print "Done"
2726
--- interpret :
2727
Интерпретация выполнена успешно
2728
--- test/source/engine/check/072-04-If.s-script :
2729
if (true)
2730
    print "Ok"
2731
else
2732
    print "Wrong"
2733
print "Done"
2734
--- interpret :
2735
Интерпретация выполнена успешно
2736
--- test/source/engine/check/072-05-If.s-script :
2737
if (false)
2738
    print "Wrong"
2739
else if (true)
2740
    print "Ok"
2741
else
2742
    print "Wrong"
2743
print "Done"
2744
--- interpret :
2745
Интерпретация выполнена успешно
2746
--- test/source/engine/check/081-00-For.s-script :
2747
for int : i in [1,2,3]
2748
    print i
2749

2750
print "Done"
2751
--- interpret :
2752
Интерпретация выполнена успешно
2753
--- test/source/engine/check/081-01-For.s-script :
2754
#{ initial_value : null } type 
2755
    Range = 
2756
    {
2757
        end     : 0,
2758
        counter : 0,
2759
        __init__ : fn [Range] (int : b, int : e) -> Range
2760
        {
2761
            def Range : range
2762
            
2763
            range.end = e
2764
            range.counter = b - 1
2765
            
2766
            return range
2767
        },
2768
        __iterator__ : fn (Range : range)
2769
        {
2770
            range.counter += 1
2771
            return [range.counter, range.counter < range.end]
2772
        }
2773
    } 
2774

2775
for int : i in Range(1,5)
2776
    print i
2777

2778
print "Done"
2779
--- interpret :
2780
Интерпретация выполнена успешно
2781
--- test/source/engine/check/081-02-For.s-script :
2782
def int :
2783
    end     = 0,
2784
    counter = 0
2785
    
2786
def auto :
2787
    __init__ = fn [self] (int : b, int : e) -> auto
2788
        {
2789
            def self : s
2790
        
2791
            s.end = e
2792
            s.counter = b - 1
2793
            
2794
            return s
2795
        },
2796
    __iterator__ = fn (self : s) -> auto 
2797
        {
2798
            s.counter += 1
2799
            return [s.counter, s.counter < s.end]
2800
        }
2801
        --- interpret :
2802
Интерпретация выполнена успешно
2803
--- test/source/engine/check/081-03-For.s-script :
2804
import "081-02-For.s-script" type range
2805

2806
def range(2,4) : i
2807

2808
print all i
2809

2810
print i.__iterator__(i)
2811
print i.__iterator__(i)
2812
print i.__iterator__(i)
2813

2814
print "Done"
2815
 --- interpret :
2816
Интерпретация выполнена успешно
2817
--- test/source/engine/check/081-04-For.s-script :
2818
import "081-02-For.s-script" type range
2819

2820
for int : i in range(-1,5)
2821
    print i
2822

2823
print "Done"
2824
--- interpret :
2825
Интерпретация выполнена успешно
2826
--- test/source/engine/check/081-05-For.s-script :
2827
def int :
2828
    end     = 0,
2829
    counter = 0
2830
    
2831
def auto :
2832
    __init__ = fn [self] (int : b, int : e) -> auto
2833
        {
2834
            def self : s
2835
        
2836
            s.end = e
2837
            s.counter = b - 1
2838
            
2839
            return s
2840
        },
2841
    __iterator__ = fn (self : s) -> auto 
2842
        {
2843
            s.counter += 1
2844
            return s.counter
2845
        }
2846
        --- interpret :
2847
Интерпретация выполнена успешно
2848
--- test/source/engine/check/081-06-For.s-script :
2849
import "081-05-For.s-script" type range
2850

2851
for int : i in range(-1,5)
2852
    print i
2853

2854
print "Done"
2855
--- interpret :
2856
Ошибка: The iterator of the iteration should return values in the form of a vector in the format: [value, bool : condition]
2857
Позиция разбора: test/source/engine/check/081-06-For.s-script:3:16[3,21]
2858
Интерпретация выполнена успешно
2859
--- test/source/engine/check/081-07-For.s-script :
2860
import "081-02-For.s-script" type range
2861

2862
for int : i in range(0,0)
2863
    print i
2864

2865
print "Done"
2866
--- interpret :
2867
Интерпретация выполнена успешно
2868
--- test/source/engine/check/081-10-For.s-script :
2869
def auto : a = [1, 2, 3]
2870

2871
for auto : x in a
2872
    x += 1
2873

2874
print a
2875
--- interpret :
2876
Интерпретация выполнена успешно
2877
--- test/source/engine/check/081-11-For.s-script :
2878
def auto : d = { a : 1, b : 2, c : 3}
2879

2880
for auto : x in d
2881
    x += 1
2882

2883
print d
2884
--- interpret :
2885
Интерпретация выполнена успешно
2886
--- test/source/engine/check/082-00-While.s-script :
2887
def int : i = 1
2888

2889
while i < 5000 
2890
    i += 1
2891

2892
print i
2893
--- interpret :
2894
Интерпретация выполнена успешно
2895
--- test/source/engine/check/082-01-While.s-script :
2896
def int : i = 1, count = 0
2897
    
2898
while i < 500 {
2899
    if i % 2 == 0
2900
        count += i
2901
    i += 1
2902
}
2903

2904
print count
2905
--- interpret :
2906
Интерпретация выполнена успешно
2907
--- test/source/engine/check/083-00-DoWhile.s-script :
2908
def int : i = -10
2909

2910
do {
2911
    if i > 5000 break
2912
    i += 1
2913
}
2914
while true
2915

2916
print i
2917
--- interpret :
2918
Интерпретация выполнена успешно
2919
--- test/source/engine/check/085-00-Break.s-script :
2920
def int : i = 1
2921

2922
while true {
2923
    if i == 4 break
2924
    print i
2925
    i += 1
2926
}
2927

2928
print "Done"
2929
--- interpret :
2930
Интерпретация выполнена успешно
2931
--- test/source/engine/check/085-01-Break.s-script :
2932
def int : i = 1
2933

2934
if i == 4 break
2935

2936
print "Done"
2937
--- interpret :
2938
Ошибка: Inappropriate use of the 'break' statement
2939
Позиция разбора: test/source/engine/check/085-01-Break.s-script:3:11[3,16]
2940
Интерпретация выполнена успешно
2941
--- test/source/engine/check/085-02-Break.s-script :
2942
def int : res;
2943

2944
do
2945
{
2946
    def auto : div = fn (int : x, int : y) -> int
2947
        {
2948
            if y == 0 break
2949
            return x/y 
2950
        }
2951
    
2952
    res =  div(4,0)
2953
}
2954
while res < 0
2955
--- interpret :
2956
Ошибка: Inappropriate use of the 'break' statement
2957
Позиция разбора: test/source/engine/check/085-02-Break.s-script:7:23[7,28]
2958
Предупреждение: Danger of error 'Деление на ноль'
2959
Позиция разбора: test/source/engine/check/085-02-Break.s-script:8:21[8,22]
2960
Интерпретация выполнена успешно
2961
--- test/source/engine/check/086-00-Continue.s-script :
2962
def int : i = -10
2963

2964
do {
2965
    i += 1
2966
    if i < 1 continue
2967
    print i
2968
}
2969
while i < 4
2970

2971
print "Done"
2972
--- interpret :
2973
Интерпретация выполнена успешно
2974
--- test/source/engine/check/086-01-Continue.s-script :
2975
def int : i = 1
2976

2977
if i == 4 continue
2978

2979
print "Done"
2980
--- interpret :
2981
Ошибка: Inappropriate use of the 'continue' statement
2982
Позиция разбора: test/source/engine/check/086-01-Continue.s-script:3:11[3,19]
2983
Интерпретация выполнена успешно
2984
--- test/source/engine/check/086-02-Continue.s-script :
2985
def int : res;
2986

2987
do {
2988
    def auto : div = fn (int : x, int : y) -> int
2989
        {
2990
            if y == 0 continue
2991
            return x/y 
2992
        }
2993
    
2994
    res =  div(4,0)
2995
}
2996
while res < 0
2997
--- interpret :
2998
Ошибка: Inappropriate use of the 'continue' statement
2999
Позиция разбора: test/source/engine/check/086-02-Continue.s-script:6:23[6,31]
3000
Предупреждение: Danger of error 'Деление на ноль'
3001
Позиция разбора: test/source/engine/check/086-02-Continue.s-script:7:21[7,22]
3002
Интерпретация выполнена успешно
3003
--- test/source/engine/check/092-01-Using.s-script :
3004
def int : j = 12
3005
    
3006
for int : i in [1,2] 
3007
    using math {
3008
        if i > 1 break
3009
        print pi-i
3010
    }
3011

3012
print self
3013
--- interpret :
3014
Интерпретация выполнена успешно
3015
--- test/source/engine/check/101-01-ArrayPush.s-script :
3016
def auto :
3017
    a = []
3018
    
3019
a ++ 1
3020

3021
print a
3022
--- interpret :
3023
Интерпретация выполнена успешно
3024
--- test/source/engine/check/102-01-ArrayPop.s-script :
3025
def auto :
3026
    a = [1, 2, 3]
3027
    
3028
a --
3029

3030
print a
3031
--- interpret :
3032
Интерпретация выполнена успешно
3033
--- test/source/engine/check/110-01-FiberMake.s-script :
3034
import "/test/source/engine/import/primes.s-script" type Primes : p1
3035

3036
make fiber p1
3037
flow fiber p1.prime(1,100)
3038
wait fiber p1
3039
 --- interpret :
3040
Интерпретация выполнена успешно
3041
--- test/source/engine/check/110-02-FiberMake.s-script :
3042
import "/test/source/engine/import/asynch.s-script"
3043
    : async
3044

3045
def auto : factor = fn [factor] (int : x) -> int 
3046
{
3047
    if (x <= 1)
3048
        return 1
3049

3050
    return x*factor(x-1)
3051
}
3052

3053
//auto : f = asynch.future(factor, 10)
3054
def auto : f = async.future( fn [factor] () { return factor(10) } )
3055
def int  : i = factor(10)
3056

3057
print i
3058
print i == f.get()
3059
--- interpret :
3060
Интерпретация выполнена успешно
3061
--- test/source/engine/check/110-03-FiberMake.s-script :
3062
import "/test/source/engine/import/primes.s-script" type Primes : p1
3063

3064
make fiber p1
3065
flow fiber p1.prime(1,100)
3066
wait fiber p1
3067
 --- interpret :
3068
Интерпретация выполнена успешно
3069
--- test/source/engine/check/113-01-FiberPush.s-script :
3070
import "/test/source/engine/import/state-pi.s-script" type Pi : pi
3071

3072
make fiber pi
3073

3074
pi.pi = math.pi
3075

3076
flow fiber pi.print_pi()
3077
wait fiber pi
3078
push fiber pi
3079
flow fiber pi.print_pi()
3080
wait fiber pi
3081
--- interpret :
3082
Интерпретация выполнена успешно
3083
--- test/source/engine/check/114-01-FiberPull.s-script :
3084
import "/test/source/engine/import/state-pi.s-script" type Pi : pi
3085

3086
make fiber pi
3087
flow fiber pi.pi_low()
3088
wait fiber pi
3089
print pi
3090
pull fiber pi
3091
print pi
3092
flow fiber pi.pi_hight()
3093
wait fiber pi
3094
pull fiber pi
3095
print pi
3096
--- interpret :
3097
Интерпретация выполнена успешно
3098

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.