Commit graph

76 commits

Author SHA1 Message Date
Turiiya
2332c17bea
tools: fix typos (#19546) 2023-10-11 03:16:59 +03:00
yuyi
05d940ac2a
fmt: simplify formatting assign statement comments (#19524) 2023-10-08 13:32:22 +03:00
yuyi
e3ba197361
ast, parser, checker, cgen: cleanup ast.ArrayInit (#19526) 2023-10-08 13:31:52 +03:00
Tim Marston
756075380b
orm: add null handling and option fields (#19379)
* orm: added is none and !is none handling

* orm: added NullType, support option fields and deprecate [nonull]

Nullable DB fields are now determined by corresponding option struct field.  The
[nonull] attribute is deprecated and fields are all NOT NULL now, unless they
are option fields. New orm primitive, NullType, added to support passing none
values to db backends, which have been updated to support it.  Also, empty
string and 0 numberic values are no longer skipped during insert (since they may
be valid values).

* orm: fix [nonull] deprecation warning

* orm: add null handling to update and select

also, improved formatting for orm cgen, and removed optimised operand handling
of orm `is` and `!is` operators

* sqlite: read/report NULLs using new orm NullType

* postgres: returning data primitives now returns new orm.NullType

* orm: initialise NullType Primitives properly

* orm: do not smart cast operands inside sql

* orm: fix bad setting of option value

* orm: improve orm_null_test.v, adding/fixing selects

* orm: cleanup: rename NullType->Null, use serial const, cgen output

* orm: handle automatically generated fields more explicitly

During insert, fields which are
* [sql: serial]
* [default: whatever]
and where the data is a default value (e.g., 0, ""), those fields are not sent
to the db, so that the db can generate auto-increment or default values.  (This
was previously done only for [primary] fields, and not in all circumstances, but
that is not correct -- primary and serial/auto-increment fields are differnet.)

* orm: udpated README

* orm: select cgen fixes: read from uninit res; fail to init res

* orm: udpated tests

* orm: fix option sub-struct fields

* orm: fixed joins to option structs

Changed orm.write_orm_select() so that you pass to it the name of a resut
variable which it populates with the result (or not) and changed use of it in
sql_select_expr() and calls in write_orm_select() to populate substructs.

* orm: fix pg driver handling of NULL results

* orm: move runtime checks to comptime checker; cache checked tables

* orm: vfmt :(

* orm: markdown formatting

* orm: renamed orm.time_ and orm.enum_; updated db drivers

* checker: updated orm tests

* orm: fix issue setting up ast option values as orm primitives

* checker: ORM use of none/options and operations (added tests)

* orm: fixed tests

* db: clean code

* examples: remove orm nonull attributes

* orm: skip test memory santisation for orm_null_test.v

* orm: make the type-to-primitive converstion fns not public

* orm: mv object var c-code from checker->cgen; fix memory corruption

Code in checker/orm.v used the SqlStmtLine object field name to store c-specific
referenecs to option and array fields (for arrays of children).  I moved this
logic to cgen.  And fixed an issue introduced with option fields, where an array
of children was unpacked into a non-array result which could corrupt memory.

* orm: fixed vast error

* orm: skip 2 tests on ubuntu-musl which require sqlite3.h

* cgen: prevent casting a struct (string)

* v fmt orm_fkey_attribute.vv, orm_multidim_array.vv, orm_table_attributes.vv; run `VAUTOFIX=1 ./v vlib/v/compiler_errors_test.v`
2023-10-05 19:09:03 +03:00
Delyan Angelov
f3aec20000
all: support ; statements, allowing for oneliners like ./v -e 'import os; println( os.ls(os.args[1])!.sorted(a > b) )' vlib/math (#19345) 2023-09-15 00:44:15 +03:00
yuyi
a23f89e243
fmt: simplify the processing logic for removing inline comments (#19297) 2023-09-07 16:00:00 +03:00
yuyi
22bd1b9d55
ast: clean up ast.StructInit (#18518) 2023-06-22 16:41:08 +03:00
Delyan Angelov
cb5d5f8ca5
vast: fix segfault for fn main() { $compile_warn("WARN") } 2023-06-14 13:59:55 +03:00
yuyi
dd1d5bca1b
ast: clean up ast.StructInit (#18387) 2023-06-09 17:43:21 +03:00
Alexander Medvednikov
45f16a2640 all: coroutines (part 1) 2023-05-27 23:33:46 +02:00
Felipe Pena
38a155ac81
cgen: make comptime call works with or-block (#18215) 2023-05-21 15:22:40 +02:00
yuyi
2bb24ee739
fmt: implement comments inside sumtype declaration (#18189) 2023-05-18 11:22:26 +02:00
yuyi
e1b8617c94
ast, cgen: fix generic closures with different generic types (fix #17829) (#17834) 2023-03-31 18:08:42 +03:00
Felipe Pena
b71c131678
cgen: fix map with comp-time reflection, improve comptime var handling (#17603) 2023-03-14 13:49:29 +02:00
ChAoS_UnItY
ae6a48c0e3
all: rename it to index in array inits (#17543) 2023-03-08 20:51:45 +01:00
Felipe Pena
2879c5110c
cgen, check, parser: implement first-class option type (#17017) 2023-02-18 11:45:01 +02:00
ChAoS_UnItY
404a9aa442
v: forbid function parameter names, shadowing imported module names (#17210) 2023-02-08 20:37:04 +02:00
l-m
bb512f782e
checker, ast: add field promoted_type for InfixExpr, filled in by the checker, to save duplicate work in the backends (#17158) 2023-01-29 21:06:05 +02:00
Delyan Angelov
1cad788779
checker: add error for type Alias = map[string]Alias (fix #17008) (#17015) 2023-01-18 01:34:43 +02:00
yuyi
64558df764
vlib: move the mysql/sqlite/pg/mssql modules under vlib/db (#16820) 2023-01-13 17:02:32 +02:00
JalonSolov
90941b3b1f
all: change optional to option (#16914) 2023-01-09 09:36:45 +03:00
Delyan Angelov
14cc43b0f6
v ast: add forgotten fields since 2022/06/01 2022-12-15 21:18:54 +02:00
Delyan Angelov
48a7de643e
all: support typeof[ T ]().idx and typeof[ T ]().name, where T can be any type, including ![]&string (#16513) 2022-12-07 11:26:27 +02:00
yuyi
f16722596c
all: replace generic '<>' with '[]' in error messages and comments (#16571) 2022-12-02 09:22:48 +02:00
yuyi
ef5be22f81
all: replace generic <> with [] - part 2 (#16536) 2022-11-26 18:23:26 +02:00
shove
37700502f5
all: implement struct field optional and disallow storing result (#16392) 2022-11-17 07:51:50 +02:00
yuyi
017ace6ea7
vfmt: change all '$expr' to '${expr}' (#16428) 2022-11-15 16:53:13 +03:00
yuyi
f6844e9766
all: change optional to result of io (#16075) 2022-10-16 09:28:57 +03:00
shove
8b962f8446
checker: fix nested struct reference type field initialized check. (fix: #15741) (#15752) 2022-09-15 07:59:31 +03:00
Delyan Angelov
4718b8b45a
all: unify the displaying of compiler errors, using a common util.show_compiler_message/2 function. 2022-08-24 13:38:47 +03:00
Delyan Angelov
77495c8d03
all: support assert condition, extra_message, evaluating and showing extra_message on assert failure (#15322) 2022-08-03 01:14:01 +03:00
Delyan Angelov
5d8d11c989
ci: fix v cmd/tools/vast after ast.StructInit field renaming 2022-07-10 18:28:24 +03:00
Alexander Medvednikov
10051e005a parser, cgen: temporary prefix ++ for translated code 2022-06-18 13:30:47 +03:00
Daniel Däschle
d679146a80
fmt: remove space in front of ? and ! (#14366) 2022-05-13 06:56:21 +03:00
Alexander Medvednikov
fbb9e65c0f all: ~500 more byte=>u8 2022-04-15 18:25:45 +03:00
Alexander Medvednikov
fb192d949b all: replace []byte with []u8 2022-04-15 15:35:35 +03:00
Alexander Medvednikov
d4a0d6f73c all: byte => u8 2022-04-15 14:58:56 +03:00
yuyi
f9fc136c24
all: rename InterfaceDecl.ifaces to InterfaceDecl.embeds (#13475) 2022-02-15 11:17:39 +02:00
yuyi
3bd528b218
ast, checker, cgen: fix error for map sumtype value init (#13290) 2022-01-27 09:44:34 +02:00
yuyi
291a1ffd8d
token: rename Position to Pos, rename position() to pos() (#13279) 2022-01-26 12:36:28 +02:00
yuyi
ca1f675dba
ast, checker, cgen: implement if guard with multi return optional (#13273) 2022-01-25 14:36:33 +02:00
Delyan Angelov
86719c5de9
tools: update vast to latest V 2021-12-22 18:13:29 +02:00
Delyan Angelov
df7f2aa8a3
all: support [markused] tags for fns/consts/globals 2021-12-15 14:34:49 +02:00
yuyi
f407d6de02
ast, checker, cgen: fix generics multiple type comptime call (fix #12777) (#12806) 2021-12-12 19:42:40 +02:00
Thomas Mangin
0d0d7323bb
transformer: provide direct_memory_access to arrays when safe (#12724) 2021-12-11 21:55:46 +02:00
Delyan Angelov
6f5d952d8f
tools: implement v ast -t file.v (terse mode) (#12734) 2021-12-06 09:50:44 +02:00
lydiandy
3b7e7c9c46
tools: update vast to latest V (#12733) 2021-12-05 19:45:51 +02:00
yuyi
0cb4557a8d
ast, checker, cgen: fix nested struct embed method call (#12714) 2021-12-04 14:51:42 +02:00
yuyi
2d43fdb42a
ast, checker, cgen: fix nested struct embed error (fix #12659) (#12712) 2021-12-04 11:19:19 +03:00
yuyi
5a89c0a480
ast: change CompFor to ComptimeFor (#12482) 2021-11-17 08:29:43 +02:00