Jean Privat [Wed, 29 Jul 2009 13:50:18 +0000 (09:50 -0400)]
parser: node locations are not nullable
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 29 Jul 2009 13:40:56 +0000 (09:40 -0400)]
parser: compute location for all nodes
Also remove first_token and last_token.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 29 Jul 2009 02:48:26 +0000 (22:48 -0400)]
parser: also visit EOF token
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 29 Jul 2009 02:46:55 +0000 (22:46 -0400)]
tools: showerr.sh to colorize nc* outputs
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 29 Jul 2009 02:45:15 +0000 (22:45 -0400)]
tools: correctly display multiline locations
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 27 Jul 2009 20:43:41 +0000 (16:43 -0400)]
parser: remove useless printl method
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 27 Jul 2009 14:40:14 +0000 (10:40 -0400)]
parser: use xss comments to clean make output
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 30 Jul 2009 01:38:37 +0000 (21:38 -0400)]
parser: remove spaces errors in generated files
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Tue, 28 Jul 2009 13:26:47 +0000 (09:26 -0400)]
syntax: vararg arguments are processed by icode
syntax/typing.nit does the type verification only.
syntax/icode_generation generate the implicit Array for vararg.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 27 Jul 2009 19:56:32 +0000 (15:56 -0400)]
syntax: generalize and publicize raw_arguments concept
Signed-off-by: Jean Privat <jean@pryen.org>
Jean-Sebastien Gelinas [Fri, 24 Jul 2009 16:50:43 +0000 (12:50 -0400)]
tests: use most recent nitc if not supplied
Signed-off-by: Jean-Sebastien Gelinas <calestar@gmail.com>
Signed-off-by: Jean Privat <jean@pryen.org>
Jean-Sebastien Gelinas [Fri, 24 Jul 2009 15:30:59 +0000 (11:30 -0400)]
tests: better handling of 'make failed' when no failed tests
Signed-off-by: Jean-Sebastien Gelinas <calestar@gmail.com>
Signed-off-by: Jean Privat <jean@pryen.org>
Jean-Sebastien Gelinas [Fri, 24 Jul 2009 05:15:39 +0000 (01:15 -0400)]
tests: do not overwrite 'errlist' on hard exit
Signed-off-by: Jean-Sebastien Gelinas <calestar@gmail.com>
Signed-off-by: Jean Privat <jean@pryen.org>
Jean-Sebastien Gelinas [Thu, 23 Jul 2009 16:37:03 +0000 (12:37 -0400)]
tests: allow multiple lines in argument files
Signed-off-by: Jean-Sebastien Gelinas <calestar@gmail.com>
Signed-off-by: Jean Privat <jean@pryen.org>
Jean-Sebastien Gelinas [Fri, 24 Jul 2009 04:19:59 +0000 (00:19 -0400)]
tools: add test to validate existence of needed classes
Signed-off-by: Jean-Sebastien Gelinas <calestar@gmail.com>
Signed-off-by: Jean Privat <jean@pryen.org>
Jean-Sebastien Gelinas [Fri, 24 Jul 2009 04:19:18 +0000 (00:19 -0400)]
tools: add 'get_type_by_name' and 'get_instantiated_type_by_name'
Signed-off-by: Jean-Sebastien Gelinas <calestar@gmail.com>
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 27 Jul 2009 06:59:57 +0000 (02:59 -0400)]
icode: discard unused pure ICode expressions
Up to now, only unused IMove expressions where discarded.
So we also distinguish pure ICode from non pure ICode.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 27 Jul 2009 07:38:22 +0000 (03:38 -0400)]
icode: all tagged primitive types can use the bool slots
Also rename bool_slots to tag_slots.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 27 Jul 2009 06:40:44 +0000 (02:40 -0400)]
icode: add lit_{null,true,false}_reg
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 27 Jul 2009 07:37:18 +0000 (03:37 -0400)]
misc: update vim syntax
* fix
aaaAAAaaa coloration
* error of unmatched { and } in superstrings
* better color for labels
* add once keyword
* better categorisations
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 27 Jul 2009 04:23:24 +0000 (00:23 -0400)]
syntax: handle labels for 'do'
Error message for 'break closures' was changed and reused for 'do'.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 27 Jul 2009 03:41:19 +0000 (23:41 -0400)]
syntax: handle labels for for, while and closures
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sun, 26 Jul 2009 03:39:41 +0000 (23:39 -0400)]
Add 'label' syntax construction
A label can be used in 'break' and 'continue' statements
A label can be declared in 'for', 'while', 'do' and closure constructions.
Note that in grouped closures, only the last closure is labeled but
it applies to all closures of the group:
foo with do
a
with do
b
end label xxx
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sun, 26 Jul 2009 05:10:47 +0000 (01:10 -0400)]
parser: add copyright info to parser_nodes.nit
Since it is now clearly no more generated.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sun, 26 Jul 2009 05:09:30 +0000 (01:09 -0400)]
parser: update readme
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sun, 26 Jul 2009 04:41:57 +0000 (00:41 -0400)]
parser: rename all P* prod classes to A*
Now, A stands for AST, not alternative :)
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sun, 26 Jul 2009 04:14:40 +0000 (00:14 -0400)]
parser: remove parser_nodes.nit autopatcher
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 20 May 2009 21:06:00 +0000 (16:06 -0500)]
parser: differentiate all P* and A* production classes
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sun, 26 Jul 2009 02:32:05 +0000 (22:32 -0400)]
syntax: syntax tree is trashed once no more needed
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sun, 26 Jul 2009 02:31:20 +0000 (22:31 -0400)]
syntax: nodes are not directly stored in MMSrc* classes
MMSrcModules has to manage the MMSrc->AST associations.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sun, 26 Jul 2009 01:48:25 +0000 (21:48 -0400)]
syntax: use chained nodes for MMSrcClasses instead of an array
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sun, 26 Jul 2009 01:13:38 +0000 (21:13 -0400)]
syntax: remove attribute _node in MMSrcAncestor
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sun, 26 Jul 2009 01:12:27 +0000 (21:12 -0400)]
syntax: remove class MMSrcTypeFormalParameter
Use a standard MMTypeFormalParameter instead.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sun, 26 Jul 2009 03:07:58 +0000 (23:07 -0400)]
icode: generate null receiver runtime checks
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sun, 26 Jul 2009 00:32:21 +0000 (20:32 -0400)]
icode: introduce intermediate code representation
Missing parts are mainly:
* identify bests ICode classes
* keep casted variable static type in icode
* remove MMSrc* classes dependency on AST
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sun, 26 Jul 2009 00:32:10 +0000 (20:32 -0400)]
compile: optimize strings in add_instr
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sat, 25 Jul 2009 17:16:40 +0000 (13:16 -0400)]
tests: base_attr_iset tests construction check errors
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 24 Jul 2009 10:15:22 +0000 (06:15 -0400)]
syntax: some cleaning to prepare intermediate code
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 24 Jul 2009 09:38:17 +0000 (05:38 -0400)]
lib: redef Array::add (a faster version)
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 23 Jul 2009 03:03:18 +0000 (23:03 -0400)]
tests: new base_vararg, remove test_star
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 23 Jul 2009 22:10:48 +0000 (18:10 -0400)]
parser: optimize lexer.nit
Use local variables instead of attribute accesses.
Direct access some array internal items.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 23 Jul 2009 22:36:19 +0000 (18:36 -0400)]
src: remove nc0 and nc1
Now nc starts from c_src/nitc instead of bin/nitc.
Rationale is that one wants to check that the compiler can really bootstrap.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean-Sebastien Gelinas [Thu, 16 Jul 2009 18:45:51 +0000 (14:45 -0400)]
tools: remove 'locate' from nodes and visitor
Signed-off-by: Jean-Sebastien Gelinas <calestar@gmail.com>
Signed-off-by: Jean Privat <jean@pryen.org>
Jean-Sebastien Gelinas [Thu, 16 Jul 2009 16:35:46 +0000 (12:35 -0400)]
tools: add 'relative_to' to Locations
Signed-off-by: Jean-Sebastien Gelinas <calestar@gmail.com>
Signed-off-by: Jean Privat <jean@pryen.org>
Jean-Sebastien Gelinas [Fri, 10 Jul 2009 16:09:29 +0000 (12:09 -0400)]
tools: add 'fatal_error' to ToolContext and visitor
Signed-off-by: Jean-Sebastien Gelinas <calestar@gmail.com>
Signed-off-by: Jean Privat <jean@pryen.org>
Jean-Sebastien Gelinas [Thu, 23 Jul 2009 05:29:08 +0000 (01:29 -0400)]
tools: order messages by line number/column
Trivial hack by Jean Privat <jean@pryen.org>:
Rename _sorter as _message_sorter
Signed-off-by: Jean-Sebastien Gelinas <calestar@gmail.com>
Signed-off-by: Jean Privat <jean@pryen.org>
Jean-Sebastien Gelinas [Fri, 10 Jul 2009 16:25:51 +0000 (12:25 -0400)]
tools: group message output
Signed-off-by: Jean-Sebastien Gelinas <calestar@gmail.com>
Signed-off-by: Jean Privat <jean@pryen.org>
Jean-Sebastien Gelinas [Mon, 13 Jul 2009 14:05:59 +0000 (10:05 -0400)]
tools: errors and warnings need Location
Signed-off-by: Jean-Sebastien Gelinas <calestar@gmail.com>
Signed-off-by: Jean Privat <jean@pryen.org>
Jean-Sebastien Gelinas [Thu, 23 Jul 2009 05:15:43 +0000 (01:15 -0400)]
tools: add useful functions to Location
Signed-off-by: Jean-Sebastien Gelinas <calestar@gmail.com>
Signed-off-by: Jean Privat <jean@pryen.org>
Jean-Sebastien Gelinas [Thu, 23 Jul 2009 05:25:30 +0000 (01:25 -0400)]
tools: add Location to MMModule
Signed-off-by: Jean-Sebastien Gelinas <calestar@gmail.com>
Signed-off-by: Jean Privat <jean@pryen.org>
Jean-Sebastien Gelinas [Thu, 23 Jul 2009 05:24:36 +0000 (01:24 -0400)]
tools: move Location in its own file
Signed-off-by: Jean-Sebastien Gelinas <calestar@gmail.com>
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 15 Jul 2009 15:45:12 +0000 (11:45 -0400)]
metamodel: new MMMethod::is_intern & is_abstract
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 15 Jul 2009 15:32:38 +0000 (11:32 -0400)]
syntax: add PClosureDecl::position
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 15 Jul 2009 15:28:30 +0000 (11:28 -0400)]
compile: promote add_assignment and out_contexts
Move them from compiling_methods to compiling_base.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 15 Jul 2009 15:16:49 +0000 (11:16 -0400)]
compile: new package primitive_info
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 10 Jul 2009 19:48:07 +0000 (15:48 -0400)]
lib: improve list iterator
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 15 Jul 2009 15:11:39 +0000 (11:11 -0400)]
parser: add Visitor::current_node and Visitor::enter_visit
Signed-off-by: Jean Privat <jean@pryen.org>
Jean-Sebastien Gelinas [Mon, 13 Jul 2009 14:10:19 +0000 (10:10 -0400)]
tools: new ToolContext::check_errors
Signed-off-by: Jean-Sebastien Gelinas <calestar@gmail.com>
Signed-off-by: Jean Privat <jean@pryen.org>
Jean-Sebastien Gelinas [Sat, 11 Jul 2009 04:59:10 +0000 (00:59 -0400)]
tools: cleanup after insertion of 'Location' class
Signed-off-by: Jean-Sebastien Gelinas <calestar@gmail.com>
Signed-off-by: Jean Privat <jean@pryen.org>
Jean-Sebastien Gelinas [Sat, 11 Jul 2009 20:54:03 +0000 (16:54 -0400)]
parser: use printf instead of echo -n
Signed-off-by: Jean-Sebastien Gelinas <calestar@gmail.com>
Signed-off-by: Jean Privat <jean@pryen.org>
Jean-Sebastien Gelinas [Fri, 10 Jul 2009 05:19:43 +0000 (01:19 -0400)]
parser: better compatibility with 'sed' script
Signed-off-by: Jean-Sebastien Gelinas <calestar@gmail.com>
Signed-off-by: Jean Privat <jean@pryen.org>
Jean-Sebastien Gelinas [Sat, 11 Jul 2009 05:01:42 +0000 (01:01 -0400)]
clib: add signal 'SIGBUS' for compatibility with MAC
Signed-off-by: Jean-Sebastien Gelinas <calestar@gmail.com>
Signed-off-by: Jean Privat <jean@pryen.org>
Jean-Sebastien Gelinas [Mon, 13 Jul 2009 13:20:02 +0000 (09:20 -0400)]
tools: add a 'failed' target to test makefile
Signed-off-by: Jean-Sebastien Gelinas <calestar@gmail.com>
Signed-off-by: Jean Privat <jean@pryen.org>
Alexis Laferrière [Mon, 13 Jul 2009 18:05:11 +0000 (14:05 -0400)]
misc: gtksourceview nit syntax highlighting
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Signed-off-by: Jean Privat <jean@pryen.org>
Jean-Sebastien Gelinas [Fri, 10 Jul 2009 20:54:13 +0000 (16:54 -0400)]
tools: add 'Location' class to use in AST and errors
Signed-off-by: Jean-Sebastien Gelinas <calestar@gmail.com>
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 8 Jul 2009 21:49:52 +0000 (17:49 -0400)]
syntax: promote some properties and classes from typing to syntax_base
Some accessors also become non nullable, thus update clients.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 8 Jul 2009 17:51:56 +0000 (13:51 -0400)]
compile: fatal error on unknown intern method
also fix tests/base_eq_null_notnull that declared an unknown intern method.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 8 Jul 2009 16:55:44 +0000 (12:55 -0400)]
compile: move init_table management from AST classes to MM classes
Signed-off-by: Jean Privat <jean@pryen.org>
Jean-Sebastien Gelinas [Tue, 7 Jul 2009 19:24:56 +0000 (15:24 -0400)]
tests: change 'rand' test for better portability
Signed-off-by: Jean-Sebastien Gelinas <calestar@gmail.com>
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Tue, 7 Jul 2009 20:34:24 +0000 (16:34 -0400)]
syntax: if absent, create classes Object and Bool in root module
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Tue, 7 Jul 2009 20:10:34 +0000 (16:10 -0400)]
compile: work on MM classes instead of MMSrc classes
only consider MMSrc classes in special cases.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Tue, 7 Jul 2009 20:09:13 +0000 (16:09 -0400)]
metamodel: add MMLocalClass::_local_local_properties
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Tue, 7 Jul 2009 15:21:06 +0000 (11:21 -0400)]
tests: handle compilation errors when nitc succeed but gcc failed
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Tue, 7 Jul 2009 15:12:51 +0000 (11:12 -0400)]
tests: remove old bin before compiling
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Tue, 7 Jul 2009 15:09:25 +0000 (11:09 -0400)]
tests: set LANG to avoid locale perturbation
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Tue, 7 Jul 2009 15:00:39 +0000 (11:00 -0400)]
syntax: do not compute ancestors if syntax failed
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Tue, 7 Jul 2009 14:46:40 +0000 (10:46 -0400)]
tests: enable vararg in bas_sig_inh_alt1
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 6 Jul 2009 19:41:17 +0000 (15:41 -0400)]
tools: git-gen-version fallback to VERSION file if things goes wrong
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 6 Jul 2009 19:34:14 +0000 (15:34 -0400)]
tools: remove --tags from git-describe in git-gen-version.sh
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 6 Jul 2009 19:33:31 +0000 (15:33 -0400)]
tools: do not regenerate nit_version.nit if not needed
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 6 Jul 2009 18:29:28 +0000 (14:29 -0400)]
compile: spell "failed" correctly
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 6 Jul 2009 18:24:57 +0000 (14:24 -0400)]
tests: massive update of tests files
Remove some obsolete tests.
Fix broken tests.
Add missing *.sav files
Add mal *.fail files.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 6 Jul 2009 17:29:48 +0000 (13:29 -0400)]
tests: tests.sh counts errors
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 6 Jul 2009 17:29:26 +0000 (13:29 -0400)]
tests: tests.sh compares results with expected buggy results
New sav/*.fail files stores buggy results in order to track unfixed bugs
or planned regressions.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 6 Jul 2009 17:05:07 +0000 (13:05 -0400)]
tests: add verbose option to tests.sh
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 6 Jul 2009 16:59:21 +0000 (12:59 -0400)]
tests: add option handling to tests.sh
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sat, 4 Jul 2009 13:39:13 +0000 (09:39 -0400)]
tests: add test_exec_ls
Since example_exec_ls was unverifiable.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sat, 4 Jul 2009 13:38:14 +0000 (09:38 -0400)]
tests: update base_primitive_null
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 2 Jul 2009 14:26:04 +0000 (10:26 -0400)]
tests: new base_int and base_int2
Test basic integer operations.
Old base_int is trashed.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sat, 4 Jul 2009 02:54:45 +0000 (22:54 -0400)]
tests: base_closure11 complex stacked and nested closure
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sat, 4 Jul 2009 02:52:02 +0000 (22:52 -0400)]
syntax: bug to fix: specialize broken type
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sat, 4 Jul 2009 02:51:08 +0000 (22:51 -0400)]
syntax: do not process erroneous formal types
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sat, 4 Jul 2009 02:44:29 +0000 (22:44 -0400)]
syntax: do not processes erroneous signatures
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sat, 4 Jul 2009 02:42:31 +0000 (22:42 -0400)]
syntax: better error message for generic class arity error
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sat, 4 Jul 2009 02:29:46 +0000 (22:29 -0400)]
tests: add base_gen2.nit
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sat, 4 Jul 2009 02:19:31 +0000 (22:19 -0400)]
syntax: add PType::is_typed
Add tests to ensure that type errors do not crash the compiler.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 3 Jul 2009 21:38:57 +0000 (17:38 -0400)]
syntax: add some missing PExpr::is_typed.
Add a quite complete test to ensure that expression errors do not crash
the compiler.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 3 Jul 2009 21:34:11 +0000 (17:34 -0400)]
syntax: move varctx initialization to the PClassdef
variable 'self' can now be accessed (even implicitly) in default
attribute definition.
A test base_attr_init_val3 is added.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean-Sebastien Gelinas [Tue, 30 Jun 2009 13:27:48 +0000 (09:27 -0400)]
tests: add test for filter_stream
Signed-off-by: Jean-Sebastien Gelinas <calestar@gmail.com>
Signed-off-by: Jean Privat <jean@pryen.org>
Jean-Sebastien Gelinas [Sat, 27 Jun 2009 01:35:09 +0000 (21:35 -0400)]
lib: add 'close' in filter_stream
Signed-off-by: Jean-Sebastien Gelinas <calestar@gmail.com>
Signed-off-by: Jean Privat <jean@pryen.org>