Delyan Angelov
7cf7215557
testing: always show benchmarks
2019-09-16 18:27:55 +03:00
Delyan Angelov
a45895a3af
new benchmark module + make the tests use it
2019-09-16 17:29:06 +03:00
hazohelet
3325775944
compiler: add android to supported platforms
2019-09-16 17:16:24 +03:00
joe-conigliaro
155fecadb7
compiler: fix empty structs
2019-09-16 14:44:12 +03:00
Alexander Medvednikov
57cfdeeaf0
Revert "os: fix get_line in windows"
...
This reverts commit 279f7d57cb
.
2019-09-16 13:54:30 +03:00
BigBlack
279f7d57cb
os: fix get_line in windows
2019-09-16 13:43:59 +03:00
joe-conigliaro
cbd4478b5e
compiler: fix msvc empty struct & enable travis msvc
2019-09-16 13:01:07 +03:00
Delyan Angelov
854de4e7e0
repl: add more stats and tests; compiler: tcc fixes
2019-09-16 00:41:12 +03:00
Alvydas Vitkauskas
ff4ef337da
compiler: remove unreachable code
2019-09-16 00:40:31 +03:00
joe-conigliaro
5db25352e5
compiler: fix module typo detection
2019-09-15 20:39:48 +03:00
joe-conigliaro
075a8e5ccb
compiler: improve typo detection
2019-09-15 20:07:12 +03:00
Alexander Medvednikov
0b81c5a3cb
bring back assert
outside of tests
2019-09-15 19:43:35 +03:00
Alexander Medvednikov
3db4d66824
operator | not defined on bool
2019-09-15 19:35:48 +03:00
Alexander Medvednikov
48c05b5a45
cgen: use *char in all functions with *char args to avoid warnings
2019-09-15 18:56:33 +03:00
Delyan Angelov
35f927e64e
repl: add some timing statistics when running REPL test files
2019-09-15 18:08:16 +03:00
Alexander Medvednikov
849bef987c
more C warnings fixed
2019-09-15 15:53:57 +03:00
Delyan Angelov
e3bd72e8e2
travis: spawn 2 separate windows instances
2019-09-15 15:52:12 +03:00
Alexander Medvednikov
3e923871cf
compiler: use *char() cast in C functions to afix warnings
2019-09-15 15:19:18 +03:00
Alexander Medvednikov
897db23203
fix vhelp.v
2019-09-15 14:15:31 +03:00
Alexander Medvednikov
bcf3dbf974
improve vhelp.v a bit
2019-09-15 14:08:40 +03:00
joe-conigliaro
b71bb95f7d
msvc: empty struct decl fix
2019-09-15 12:27:28 +03:00
joe-conigliaro
f077fbd32d
vlib: change [0;n]
to [0].repeat(n)
2019-09-15 12:26:05 +03:00
Delyan Angelov
1d7b9a3b0b
v up: on windows delete existing v_old.exe before renaming the new v.exe to it
2019-09-15 04:33:08 +03:00
Alexander Medvednikov
4a43c2fa1a
Revert "compiler: pass -l flags without space (needed for tcc)"
...
This reverts commit 982a162fbf
.
2019-09-15 03:55:56 +03:00
Alexander Medvednikov
5cc81b91cb
JavaSript backend (early stage)
2019-09-15 03:49:57 +03:00
Delyan Angelov
982a162fbf
compiler: pass -l flags without space (needed for tcc)
2019-09-14 23:55:12 +03:00
Alexander Medvednikov
3d2c266980
compiler: -autofree flag
2019-09-14 18:54:55 +03:00
Alexander Medvednikov
682eedce59
compiler: remove the temporary windows check
2019-09-14 18:34:59 +03:00
Henrixounez
c604a5c02f
compiler: no free on stack allocated array
2019-09-14 13:40:59 +03:00
joe-conigliaro
b96cbe2177
compiler: temporary memory fix on windows
2019-09-14 13:09:25 +03:00
unknown-v
3dc4abddec
cc.v: build_module mode fix
...
Create the modules directory if it's not there.
2019-09-13 20:47:17 +03:00
joe-conigliaro
c614639e7b
compiler: use os.PathSeparator
2019-09-13 18:59:17 +03:00
Alexander Medvednikov
21f3b9eccc
compiler: do not free memory on Windows for now
2019-09-13 16:27:09 +03:00
Nicolas Sauzede
7f3cfea02b
compiler: improve the help message
2019-09-13 16:19:41 +03:00
joe-conigliaro
5aaa794519
compiler: clean up the typo check
2019-09-13 16:15:30 +03:00
Alexander Medvednikov
9dd86f6fb8
compiler: more memory logic + replace "cur_fn &Fn" with "cur_fn Fn"
2019-09-13 15:47:31 +03:00
Vitor Oliveira
f3a74e7d80
compiler: fix typo in main.v
2019-09-13 14:25:05 +03:00
joe-conigliaro
41734affb3
compiler: detect typos in function/variable/module names
2019-09-13 14:10:24 +03:00
BigBlack
8fe46d5db5
compiler: call string method in C funtion parameter
2019-09-13 02:41:51 +03:00
Alexander Medvednikov
a555b1fcff
V 0.1.19
2019-09-12 03:59:34 +03:00
Vitor Oliveira
c66fbd9bff
compile: fix typos in vhelp.v
2019-09-11 23:54:36 +03:00
unknown-v
26edb7d797
scanner: @FILE escape \
2019-09-11 20:16:42 +03:00
BigBlack
f8d4d6cdc7
compiler: 32-bit option
2019-09-11 19:26:35 +03:00
Henrixounez
af60f9ead4
compiler: escapes quote on literals
2019-09-11 15:48:08 +03:00
Alexander Medvednikov
9853323157
array: make ".contains()" private, use "in" everywhere
2019-09-11 15:12:13 +03:00
Delyan Angelov
63f2f2b294
compiler: improve v --help . Move help descriptions to compiler/vhelp.v
2019-09-11 13:35:03 +03:00
BigBlack
e6354567e5
compiler: fix sizeof and cc
2019-09-11 13:34:19 +03:00
Delyan Angelov
3588c3363d
backtraces: on android (bionic), there is no execinfo.h
2019-09-11 13:31:29 +03:00
Vitor Oliveira
797b35cdcb
compiler: add vfmt() to reduce complexity
2019-09-11 01:49:56 +03:00
Delyan Angelov
bc606415c3
compiler: stage 2 of vhash support
2019-09-11 01:12:46 +03:00
Delyan Angelov
a53c69de38
os: use path separator more consistently
2019-09-11 01:08:23 +03:00
Delyan Angelov
08262b5c43
compiler: stage 1 of printing shortened commit on v --version
2019-09-10 23:08:48 +03:00
Alexander Medvednikov
03b3278369
compiler: replace the rest of .build with .build_module
2019-09-10 18:19:29 +03:00
Vitor Oliveira
edd8528049
compiler: rename build to build_module
2019-09-10 17:36:14 +03:00
Vitor Oliveira
cd47f09f86
Isolate install_v to reduce complexity
2019-09-10 13:09:36 +03:00
Delyan Angelov
0ade45db08
compiler: print the offending source line on error
2019-09-10 13:08:43 +03:00
Alexander Medvednikov
7fc678c961
fix urllib_test.v
2019-09-09 14:21:18 +03:00
Alexander Medvednikov
00687de43b
memory: clean up all arrays in the V compiler
2019-09-09 13:55:47 +03:00
Alexander Medvednikov
a6ec6e23bc
bf: minor clean up
2019-09-09 02:31:43 +03:00
Alexander Medvednikov
71224ad17c
compiler: fix building_v
2019-09-08 17:19:42 +03:00
Alexander Medvednikov
a6f927a6e9
bring back automatic array_free()
2019-09-08 14:50:18 +03:00
joe-conigliaro
cb6fadf917
remove freetype submodule accidentally added in #1890
2019-09-08 12:02:03 +03:00
joe-conigliaro
e78e284380
compiler: tidy flag order
2019-09-07 19:19:17 +03:00
Delyan Angelov
d5665997e0
compiler: @FILE, @LINE, @FN, @COLUMN
2019-09-07 13:44:41 +03:00
Alexander Medvednikov
76a89c832e
parser: small optimizations
2019-08-26 01:19:39 +03:00
Joe Conigliaro
794cd561cd
fix libpath issue
2019-09-07 12:04:52 +03:00
joe-conigliaro
b7361d00aa
compiler: fix v test v on paths with spaces
2019-09-06 19:30:55 +03:00
Joe Conigliaro
6de1f14a56
fix comments & rearrange method
2019-09-06 16:00:46 +03:00
Henrixounez
bfdab586e3
compiler: allow to declare C function with pointers with &
2019-09-06 15:13:38 +03:00
joe-conigliaro
8ac0a2b2dd
compiler: rework flags & support win path spaces + more
2019-09-06 15:12:04 +03:00
Henrixounez
3de99d365e
compiler: allows dir spelling with slash at the end
2019-09-06 13:23:19 +03:00
Alexander Medvednikov
c12d4d1bd2
make "build module" generate an object file
2019-09-05 13:01:30 +03:00
BigBlack
7cf058feac
parser: function pointers
2019-09-05 12:09:41 +03:00
Henrixounez
726fcb5eec
compiler: check if-expressions returning only one type
2019-09-05 12:08:40 +03:00
Joe Conigliaro
96e959342a
compiler/msvc: support paths with hyphen
2019-09-05 04:06:13 +03:00
Delyan Angelov
ec61821bf7
compiler: support explicit runrepl argument, so that the v repl can be launched with options like -debug and so on.
2019-09-04 19:50:51 +03:00
joe-conigliaro
d1210b9e9f
compiler/cgen: fix github username in error message
2019-09-04 19:49:53 +03:00
Danil-Lapirow
c6f7479a72
parser: add return dropping to false to check whether statements return
2019-09-04 19:48:01 +03:00
Danil-Lapirow
5c43bfbf13
parser: add additional paren for multi case branch
2019-09-04 19:47:37 +03:00
Joe Conigliaro
dd670fb4a3
workaround msvc 0 struct field bug
2019-09-04 19:47:13 +03:00
Henrixounez
540602fab6
main: updated help on building a module
2019-09-04 19:46:42 +03:00
Joe Conigliaro
afde6f582d
workaround for fn_test on windows
2019-09-04 18:24:41 +03:00
joe-conigliaro
8e25019634
simplify & optimize cgen sort_structs
2019-09-04 11:41:21 +03:00
joe-conigliaro
b4d033ff54
compiler: generalize mod dag & use for sorting structs also
2019-09-03 19:11:21 +03:00
joe-conigliaro
6921c15b7b
compiler: fix repl chained_fields test (windows)
2019-09-03 18:42:40 +03:00
Delyan Angelov
c9a39dfdb5
compiler: build tetris executable on windows with both msvc and mingw gcc
2019-09-03 16:09:43 +03:00
Joe Conigliaro
1f67d9edd8
fix bugs breaking tests
2019-09-03 15:21:52 +03:00
Delyan Angelov
d681e1cae3
compiler: fix deprecation message for u8.
2019-09-02 21:04:27 +03:00
F1ssi0N
892c948a44
Make sure to actually generate the empty struct declaration
2019-09-02 15:33:03 +03:00
Alexander Medvednikov
1c6d51f271
remove u8 and i32 from tests and examples
2019-09-02 15:02:25 +03:00
Alexander Medvednikov
0db1eaa55a
parser: get_type2() for the upcoming type system refactoring
2019-09-02 14:55:26 +03:00
Alexander Medvednikov
b667940c68
parser: fix a +1 bug when skipping function body
2019-09-02 13:57:00 +03:00
Alexander Medvednikov
0e2c41e0f9
replace *Foo with &Foo everywhere
2019-09-01 22:51:16 +03:00
Alexander Medvednikov
aaab24dcf8
use &Foo instead of *Foo warning
2019-09-01 22:45:06 +03:00
Alexander Medvednikov
59ba551d3b
u8 + i32 warnings
2019-09-01 22:41:29 +03:00
Alexander Medvednikov
3bd7bcfac3
remove u8 and i32 aliases
2019-09-01 22:37:22 +03:00
Alexander Medvednikov
d078aa360b
parser: use map[string]Type instead of []Type
2019-09-01 22:30:49 +03:00
Alexander Medvednikov
24fdefe152
v test: print all fails
2019-09-01 14:14:46 +03:00
Delyan Angelov
011afeb2ea
compiler: fix building v with tcc on linux
2019-09-01 14:12:37 +03:00
Alexander Medvednikov
bfa6505636
compiler: replace &Type with Type
2019-09-01 14:05:03 +03:00
Alexander Medvednikov
961e778ed1
map_test.v: format + ref test
2019-09-01 14:05:03 +03:00
teggot
c04cca1ae4
Allow use FP without calling it
2019-09-01 02:20:35 +03:00
Alexander Medvednikov
0a4a1ca36c
compiler: simplify a[index] = val
2019-08-31 13:30:08 +03:00
teggot
b6ecbd8bc3
Check for type, not name
2019-08-31 11:47:55 +03:00
Alexander Medvednikov
72363ada84
array: make .set() private + format
2019-08-31 02:35:05 +03:00
Alexander Medvednikov
29b4114bc0
compiler: simplify [0; n]
2019-08-31 01:34:43 +03:00
Emily Hudson
04a200d3d8
compiler: fix array initialisation generation for msvc
2019-08-31 00:59:21 +03:00
kawa-yoiko
4f0f99e663
parser: fix mutability with chained fields
2019-08-30 20:19:06 +03:00
Alexander Medvednikov
13f3f79eb8
linguist test
2019-08-30 13:01:20 +03:00
kawa-yoiko
6d35f68242
parser: restore outer variable in index exprs
2019-08-30 12:16:39 +03:00
Alexander Medvednikov
d5d1b74f90
time: do not include <unistd.h> on windows
2019-08-30 01:10:29 +03:00
Alexander Medvednikov
3c5087902d
fix msvc build
2019-08-30 01:06:10 +03:00
Henrixounez
87ed442d9e
compiler: nested structure print error fix
2019-08-30 00:55:59 +03:00
Alexander Medvednikov
0c31172fb0
make print() generic, just like println()
2019-08-30 00:41:25 +03:00
Emily Hudson
7fc899dfd6
bootstrap: single make.bat, default msvc option for forcing gcc
2019-08-30 00:13:53 +03:00
Alexander Medvednikov
b17bf5843c
compiler: fix v_win.c generation
2019-08-30 00:07:54 +03:00
Alexander Medvednikov
2fe20cd092
compiler: fix struct order bug
2019-08-29 23:46:12 +03:00
Henrixounez
c6b79dfd24
compiler: check for reserved names during struct declaration
2019-08-29 22:41:21 +03:00
Henrixounez
2507735596
compiler: stricter non-allocation condition for print optimization
2019-08-29 22:19:30 +03:00
Henrixounez
29e0396eca
compiler: adds handling of two variables for loop on string
2019-08-29 21:41:16 +03:00
Shiqing
519028e263
Fix incorrect string open/close check in REPL
2019-08-29 21:40:49 +03:00
Henrixounez
52c2763ee3
compiler: prompt error if trying to use f for floats
2019-08-29 21:39:58 +03:00
Henrixounez
4b9cc1246e
compiler: allow functions return without main function
2019-08-29 21:39:39 +03:00
Delyan Angelov
4f62e8235f
repl: add a test for naked strings.
2019-08-29 12:30:33 +03:00
Delyan Angelov
83954acfd4
compiler: use cerror instead of panic.
2019-08-29 11:50:18 +03:00
Joe Conigliaro
4a506b0566
fix issue #1777
2019-08-29 11:46:05 +03:00
Alexander Medvednikov
91ece782af
compiler: move Var back to table.v now that the struct bug is fixed
2019-08-28 21:23:46 +03:00
Alexander Medvednikov
5b1700e52a
compiler: fix struct order bug
2019-08-28 21:19:34 +03:00
Alexander Medvednikov
f29079daac
better winroot.zip info message
2019-08-28 21:19:34 +03:00
Delyan Angelov
c92654a044
fix building v on alpine with musl libc
2019-08-28 19:26:18 +03:00
unknown-v
fed9f01b2d
use -rdynamic only if host os is not windows
2019-08-28 16:23:53 +03:00
Vitaly Takmazov
5124eae47d
msvc: check exit code
2019-08-28 13:26:27 +03:00
Delyan Angelov
73c6bae480
print backtraces on panic on mac and linux
2019-08-27 23:29:13 +03:00
joe-conigliaro
02fc7e14cd
make trim use cutset like trim_right/trim_left
2019-08-27 22:53:32 +03:00
Delyan Angelov
2d87fea074
compiler: allow passing options to v run
2019-08-27 21:08:54 +03:00
Alexander Medvednikov
e2c7d3b2d9
v symlink
2019-08-27 19:35:48 +03:00
Alexander Medvednikov
f6147b7ac7
Revert "switch deprecation notice"
...
This reverts commit a43b831965
.
2019-08-27 13:10:18 +03:00
Alexander Medvednikov
b48b076dac
remove is_play
2019-08-27 13:10:18 +03:00
Sunny Lam
a5b44b3bc5
disable implicit-function-declaration for FreeBSD
2019-08-27 12:53:50 +03:00
Alexander Medvednikov
cca85566d3
parser: fix duplicate enum generation
2019-08-27 02:48:55 +03:00
Alexander Medvednikov
a43b831965
switch deprecation notice
2019-08-27 02:47:49 +03:00
Danil-Lapirow
7edcbeca1a
parser: match expression + match fixes
2019-08-27 00:39:11 +03:00
Alexander Medvednikov
d4b6b6c833
freetype: render all Unicode characters
2019-08-27 00:20:54 +03:00
Delyan Angelov
99c9410cc2
compiler: add all C reserved words to CReserved
2019-08-26 20:04:57 +03:00
Robin Martijn
5df31c16f7
json: fix #1751 ; support unsigned integers
2019-08-26 20:02:19 +03:00
teggot
f34d14d901
Register map type while declaration
2019-08-26 20:01:34 +03:00
Delyan Angelov
aa438c7c3f
os: fix exec() and get_raw_line(); fix Windows tests and examples
2019-08-26 13:51:48 +03:00
Henrixounez
fe50aeb130
compiler: prevent multiple same field initialization
2019-08-26 13:39:45 +03:00
Swastik Baranwal
db525524ee
string: title() and small fixes
2019-08-26 13:32:53 +03:00
Henrixounez
ad32a3770b
compiler: cast correctly strings between byte* and char* when needed
2019-08-25 01:50:44 +03:00
Henrixounez
0a0d6536c2
compiler: access index when casting array into an array[] for pointer
2019-08-25 01:49:51 +03:00
Alexander Medvednikov
57880aed18
compiler: fix linux crash
2019-08-24 15:04:31 +03:00
Alexander Medvednikov
dfc7c9c00f
final tcc fixes
2019-08-24 14:39:27 +03:00
Alexander Medvednikov
cd10890258
minor tcc fixes
2019-07-08 03:44:47 +02:00
Alexander Medvednikov
4c07df6a21
small webassembly fix
2019-08-24 03:09:23 +03:00
Alexander Medvednikov
031e7fe113
os: libproc.h on macos only
2019-08-24 02:53:11 +03:00
Alexander Medvednikov
7fd9827318
all: add missing includes
2019-08-24 02:48:47 +03:00
teggot
2be0777c98
Fix issue of missing code in C
2019-08-24 00:27:48 +03:00
teggot
421b6ce4ac
Fix typo
2019-08-24 00:26:30 +03:00
Alexander Medvednikov
d98c20466e
cc.v: build with "implicit-function-declaration" and fix declarations
...
required for the webassembly backend
2
2019-08-24 00:20:53 +03:00
Delyan Angelov
1b3a21f197
compiler: use absolute paths for the c files and clean them up
2019-08-23 20:05:02 +03:00
Alexander Medvednikov
0589decc43
parser: change the new_parser() signature
2019-08-23 13:43:31 +03:00
Alexander Medvednikov
624a932420
compiler: cc.v
2019-08-23 12:06:01 +03:00
Delyan Angelov
d362f73af8
compiler: support passing -cc to specify the desired C compiler
2019-08-23 11:42:48 +03:00
Alexander Medvednikov
df593870ae
scanner: fix a string overflow
2019-08-23 03:28:25 +03:00
Alexander Medvednikov
8f1bf6033e
compiler: remove module_path()
2019-08-23 03:10:37 +03:00
Alexander Medvednikov
e39cb41d6b
json: custom json field names with "[json:field_name]"
2019-08-23 02:54:39 +03:00
Alexander Medvednikov
7086547471
compiler: replace STRUCT_DEFAULT_VALUE with {0}
2019-08-23 02:38:18 +03:00
Alexander Medvednikov
6c6cbe0821
changelog for the upcoming V 0.1.19
2019-08-23 00:26:59 +03:00
Alexander Medvednikov
dcfc9eb1a1
remove from the language
2019-08-22 23:19:31 +03:00
Alexander Medvednikov
eb5fcafa77
table: TypeCategory; freetype: remove C code; [typedef] C structs;
...
Objective-C interfaces
2019-08-22 22:18:55 +03:00
Henrixounez
780ddaf22b
compiler: handles printing of structures and arrays of structures
2019-08-22 14:34:33 +03:00
Henrixounez
232532ba3b
repl: clear screen and help menu
2019-08-22 14:24:37 +03:00
Henrixounez
be99a65f2b
compiler: comptime generated str methods for arrays are public
2019-08-22 14:22:44 +03:00
Delyan Angelov
77b31de117
compiler: produce errors in C "filepath:line:column:" format
2019-08-22 14:15:11 +03:00
Henrixounez
9b3b22d6b3
compiler: allows compound assignment operators on array
2019-08-22 04:57:43 +03:00
Delyan Angelov
1ddc9dc604
orm: allow variables like q.nr_orders in queries too.
2019-08-20 21:35:13 +03:00
Delyan Angelov
cf06faf09b
orm: allow both integer and string arguments in db.select and db.select limit 1
2019-08-20 17:32:39 +03:00
Delyan Angelov
49899c649c
orm: fix select .. limit 1 . This case now returns an ?Row.
2019-08-20 16:33:14 +03:00
Emily Hudson
151686501d
compiler: fix MSVC flag parsing
2019-08-20 16:32:15 +03:00
Delyan Angelov
9ff8793666
compiler: refactoring - extract cheaders.v and live.v from main.v .
2019-08-20 11:26:50 +03:00
Alexander Medvednikov
707ddba143
examples: rename hot_code_reloading to hot_reload
2019-08-20 00:08:45 +03:00
Delyan Angelov
41efe545f2
repl_test: remove dependance on echo, use stdin redirection instead.
2019-08-18 23:02:32 +03:00
Henrixounez
e1d2c83ff6
repl: functions and conditional blocks support
2019-08-18 22:50:38 +03:00
Henrixounez
14c2319dcc
compiler: prevent accessing negative index of arrays
2019-08-18 20:11:47 +03:00
Henrixounez
38db845378
compiler: auto dereference mutable variable upon return
2019-08-18 20:09:01 +03:00
Henrixounez
14f13ff55a
tests: v implementation of repl tests
2019-08-18 19:26:55 +03:00
Henrixounez
aae063b9ad
repl: dont save line if last compilation errored
2019-08-18 19:25:46 +03:00
Delyan Angelov
f013359a44
compiler: improve error handling for 'v install'
2019-08-18 17:57:57 +03:00
Emily Hudson
d373b331fa
ompiler: MSVC related fixes and v test v
for windows testing
...
* MSVC related fixes and v test v for windows testing
* If second stage crashes on windows goto error
* use os.exec instead of system so that the error can be printed
* use -debug for osx vid
* Fix some whitespace to trigger a rebuild
2019-08-18 17:25:33 +03:00
Delyan Angelov
bbc5c14d99
repl: fix compiler/tests/repl/error.repl test case.
2019-08-18 17:24:02 +03:00
Alexander Medvednikov
56fbafe03a
cc(): fix -x objective-c; ui.focus_app()
2019-08-18 16:59:36 +03:00
Delyan Angelov
4a27b8f43d
compiler: improved error, when c compiler is missing/not found.
2019-08-18 13:03:28 +03:00
S-YOU
329e7bd2c8
add static inline attribute
2019-08-18 13:02:07 +03:00
Alexander Medvednikov
8e1c31e860
cc(): print compilation error correctly
2019-08-18 01:30:48 +03:00
Alexander Medvednikov
fe2d2bd2a3
fmt: remove trailing spaces
2019-08-17 22:21:43 +03:00
Alexander Medvednikov
8a1324c141
os: make exec() return ?Result with exit code and output
2019-08-17 21:11:40 +03:00
teggot
79c727f014
Add support for raw json fields in structs
2019-08-17 16:20:40 +03:00
Alexander Medvednikov
37a607dce5
fix v test v
2019-08-17 01:15:38 +03:00
Alexander Medvednikov
c6e7838a44
V 0.1.18
2019-08-17 00:48:07 +03:00