Sander Spies
483f591f62
Typo
2020-01-21 14:57:13 +01:00
Pierre-Emmanuel Wulfman
5ba2144f0f
Merge branch 'new-typer-bugfix1' into 'dev'
...
Implemented some missing cases of the subst in the new typer.
See merge request ligolang/ligo!334
2020-01-21 13:53:27 +00:00
Lesenechal Remi
57aeb4e931
detect self_address when not at top level
2020-01-21 13:26:38 +01:00
Suzanne Dupéron
93d16b4b6a
typer: do multiple substitutions at once (pass a sort of map from free variables to their substitution)
2020-01-21 13:25:04 +01:00
Suzanne Dupéron
614970d2d7
Implemented some missing cases of the subst. First kinda actual typer test passes!
2020-01-20 21:19:37 +01:00
Suzanne Dupéron
688a636251
typer: cleanup
2020-01-20 21:19:37 +01:00
Sander Spies
fbb622cc03
Add support for tuple destructuring in ReasonLIGO
2020-01-20 19:03:00 +01:00
Christian Rinderknecht
8384e3d1f7
[WIP] Refactoring of front-end.
2020-01-20 10:57:07 +01:00
Christian Rinderknecht
673b54e6ae
Merge branch 'dev' of gitlab.com:ligolang/ligo into rinderknecht-dev
2020-01-18 11:37:36 +01:00
Sander
88159e15b2
Add inline attribute
2020-01-16 19:36:04 +00:00
Christian Rinderknecht
5972d1d988
Merge branch 'dev' of gitlab.com:ligolang/ligo into rinderknecht-dev
2020-01-14 18:37:17 +01:00
Christian Rinderknecht
cb8aaa7b9b
Additional refactoring to get local and global builds closer.
...
I removed the last top-level effect (the execution of cpp).
The idea is that ParserUnit.ml and each ParserMain.ml get closer
to pascaligo.ml, cameligo.ml and reasonligo.ml, respectively.
2020-01-14 18:35:30 +01:00
Christian Rinderknecht
c5b5ffe51a
Merge remote-tracking branch 'origin/dev' into rinderknecht-dev
2020-01-14 12:59:32 +01:00
Christian Rinderknecht
9570caac53
Refactoring to bring local builds of the parsers closer to the global build.
...
Added --expr to parse expressions.
2020-01-14 01:27:35 +01:00
Suzanne Dupéron
ff9370a422
Improved typer error messages in operators.ml LIGO-371
2020-01-13 23:56:06 +01:00
Lesenechal Remi
7143b82ba8
support for key and signature literals
2020-01-13 11:37:10 +01:00
Pierre-Emmanuel Wulfman
bbfcc9839b
Updates for ReasonLIGO
2020-01-10 18:00:23 +01:00
Pierre-Emmanuel Wulfman
98d6aea4e1
mr review 2
2020-01-10 17:28:45 +01:00
Pierre-Emmanuel Wulfman
60edd0cf5b
after review 1
2020-01-10 16:41:47 +01:00
Christian Rinderknecht
6bf91538c4
Some refactoring.
...
I removed AST.mli from CameLIGO (for maintenance's sake).
I removed useless functions.
I renamed unlexer.ml to Unlexer.ml
I added a cleaning rule for my Makefile in Makefile.cfg
2020-01-10 15:32:54 +01:00
Pierre-Emmanuel Wulfman
812834656a
Updates for OcamLIGO and PascaLIGO
2020-01-10 13:52:05 +01:00
Tom Jack
5cef850bdd
Fix printing of bytes in parsers/lexers
2020-01-09 16:53:07 -06:00
Tom Jack
1b0ed4d4de
Fix literal bytes
2020-01-09 16:53:07 -06:00
Lesenechal Remi
20c9de0380
parset negative tests for all syntaxes
2020-01-09 22:19:40 +01:00
Lesenechal Remi
47199ca13c
add negative tests rules
2020-01-09 22:19:40 +01:00
Christian Rinderknecht
19e2ffb750
Merge branch 'dev' of gitlab.com:ligolang/ligo into rinderknecht-dev
2020-01-09 19:49:57 +01:00
Christian Rinderknecht
dad9b0f816
Refactoring of the AST and simplfier of PascaLIGO.
...
Some weeks ago, anonymous functions as expressions were added to
PascaLIGO, unfortunately in a manner that allowed in theory for
contexts in which a named function was found when an anonymous was
expected, and vice-versa. That explains that the simplifier had two new possible errors:
* unexpected_anonymous_function
("you provided a function declaration without name")
* unexpected_named_function
I changed the AST and the parser so that function expressions
correspond to anonymous functions (without block) and function
declarations correspond to named functions.
I also removed a error in the simplifier, which was unused:
* bad_bytes
("you provided a function expression with a name (remove it)")
2020-01-09 17:26:07 +01:00
Tom Jack
10eebf69bd
Support always-failing conditionals
2020-01-09 09:47:54 -06:00
Christian Rinderknecht
c347d1b08b
Removed temporary Emacs file.
2020-01-09 15:55:58 +01:00
Christian Rinderknecht
9426222d86
Merge branch 'dev' of gitlab.com:ligolang/ligo into rinderknecht-dev
2020-01-09 14:27:17 +01:00
Christian Rinderknecht
d123abd46f
Added new error for duplicated record fields.
...
Removed interface for the AST (for maintenance sake).
2020-01-09 14:26:47 +01:00
Sander Spies
8904ededb7
Improve error handling of negative start positions.
2020-01-09 10:41:24 +00:00
Christian Rinderknecht
330d2ab351
Forgot to commit this.
2020-01-08 23:47:37 +01:00
Christian Rinderknecht
b8017ca8ac
Moved stuff to module [SyntaxError] from [AST] and [Parser].
...
Added support for the rejection of non-linear patterns in PascaLIGO.
2020-01-08 23:35:09 +01:00
John David Pressman
71989876db
Fix a bug, test added:
...
A never accounted message was not adding anything to the map
2020-01-08 20:58:26 +00:00
Suzanne Dupéron
13ff600509
union-find: rename partition to UnionFind for more consistency across the various names that opam and dune assign to this library
2020-01-08 18:12:00 +00:00
Suzanne Dupéron
dd9a4dfb47
update union-find library (part 2: adjust module names)
2020-01-08 18:12:00 +00:00
Christian Rinderknecht
8bdc103ec8
Merge branch 'dev' of gitlab.com:ligolang/ligo into rinderknecht-dev
2020-01-08 16:46:59 +01:00
Christian Rinderknecht
9e7c97637c
Added support for language-specific parse errors for PascaLIGO:
...
* Duplicate variants in the same type declaration
* Duplicate parameter in the same function declaration
* Shadowing of predefined value in a declaration
I fixed the architecture for that support: ParserMain.ml is now where
those specific errors are handled, and they are produced by the
semantic actions of the parsers.
2020-01-08 16:39:52 +01:00
Lesenechal Remi
05afd6c8c7
improve simplifier self pass errors
2020-01-07 18:32:32 +00:00
Sander Spies
8f57f63be7
Show proper parser error messages in the terminal again.
2020-01-07 12:15:54 +00:00
Tom Jack
6716af9123
Eliminate some spurious synonyms of "location"
2020-01-07 00:34:41 +00:00
Lesenechal Remi
d885eb8d4a
check key_hash format
2020-01-06 22:52:30 +01:00
Lesenechal Remi
55a8734c81
key_hash now comparable
2020-01-06 21:31:54 +01:00
Lesenechal Remi
6841609362
allow key_hash literals
2020-01-06 21:31:45 +01:00
Sander Spies
301defda3f
Show lexer error messages in CameLIGO + PascaLIGO.
2020-01-06 13:46:11 +01:00
Christian Rinderknecht
ddd438aaa8
Forgot to add.
2020-01-06 10:03:41 +00:00
Christian Rinderknecht
a6e4837aa0
Sharing standalone lexers and parsers, and parser error API.
2020-01-06 10:03:41 +00:00
Lesenechal Remi
f133729318
fix dune file warnings
2020-01-05 14:32:15 +01:00
Christian Rinderknecht
e23350071f
Merge remote-tracking branch 'origin/dev' into rinderknecht-dev
2020-01-04 17:47:20 +01:00
John David Pressman
10b26f610f
Show lexer error messages in ReasonLIGO
2020-01-04 08:24:16 +00:00
Lesenechal Remi
c805a27b99
adding timestamp literals as string or int
2020-01-03 18:11:27 +01:00
Christian Rinderknecht
1806d6d74c
Merge remote-tracking branch 'origin/dev' into rinderknecht-dev
2020-01-03 16:58:37 +01:00
Lesenechal Remi
a3a09dc0e5
functionize the name in the error
2020-01-03 16:23:18 +01:00
Lesenechal Remi
4d56a71bd1
propagate location for cameligo variables
2020-01-03 16:23:18 +01:00
Lesenechal Remi
3288696784
add the name of the variable in the unbound variable error message title
2020-01-03 16:23:18 +01:00
Sander
ce6ccab728
Add support for empty constructors.
2020-01-03 13:01:13 +00:00
Lesenechal Remi
2d7c3eb216
support bytes_unpack operator in pascaligo + tests
2020-01-02 16:19:21 +01:00
Christian Rinderknecht
c18e6e9748
Handling of EOF in ParserAPI messages.
2020-01-02 15:44:21 +01:00
Lesenechal Remi
46027de719
Proper error with location
2020-01-02 15:21:56 +01:00
Lesenechal Remi
42cbabac69
check ast_simplified address literals to be well formatted
2020-01-02 15:20:48 +01:00
Lesenechal Remi
bddad3f234
add missing GE operator (>=) to cameligo
2019-12-31 14:23:51 +01:00
Lesenechal Remi
61d095ea28
also preprocess the executable
2019-12-31 14:23:51 +01:00
Lesenechal Remi
6f804a4432
exclude parser debug tooling
2019-12-31 14:23:51 +01:00
Lesenechal Remi
c8339ed2ef
first try
2019-12-31 14:23:51 +01:00
John David Pressman
dcfc8d6391
Horrible hack to rewrite CST for tuple param destruct,
...
Fails because Let In doesn't support multi-bind
2019-12-29 01:24:22 +00:00
Christian Rinderknecht
ea7460f8c9
Miscellaneous.
2019-12-28 17:58:15 +01:00
Christian Rinderknecht
c92e3b28ad
Merge branch 'dev' of gitlab.com:ligolang/ligo into rinderknecht-dev
2019-12-28 17:58:09 +01:00
John David Pressman
3d9489530a
Merge branch 'dev' into feature/cameligo-multi-bind-let-in
2019-12-27 09:29:30 -08:00
John David Pressman
e1ecb36e61
Have let ... in evaluate right hand side first during multi-bind
2019-12-26 21:06:24 -08:00
Christian Rinderknecht
6814e7786a
Same error formatting for the incremental and monolithic API of Menhir.
2019-12-26 18:57:02 +01:00
Christian Rinderknecht
379311a748
Shortened the parser's API.
...
Unfortunately, even thought all the front-ends use the same
ParserAPI.ml, that file cannot be moved to the folder `shared` due to
a dependency on AST.ml produced by Menhir.
2019-12-26 18:17:57 +01:00
Christian Rinderknecht
548b1267a4
Added .gitignore for all syntaxes.
2019-12-26 14:13:19 +01:00
Christian Rinderknecht
07a70b4648
Added unlexing to ReasonLIGO.
2019-12-26 13:31:54 +01:00
Christian Rinderknecht
ea4eb76013
I added support for unlexing to CameLIGO. Fixed cover.sh.
2019-12-26 13:23:32 +01:00
John David Pressman
2d9de2aef0
Clean up let ... in multi-bind
2019-12-24 15:35:05 -08:00
John David Pressman
48a3bebadd
Working rough draft of let ... in multi-bind
2019-12-24 14:54:22 -08:00
Christian Rinderknecht
7c1d637226
Fixing the constant constructors in CameLIGO's simplifier.
2019-12-24 18:56:21 +01:00
Christian Rinderknecht
e99c9b32de
Fixed the [dune] file for building [pascaligo/Unlexer.exe].
2019-12-24 17:35:43 +01:00
Christian Rinderknecht
dadf1fbe41
Fixed the stratification of "++".
2019-12-24 17:01:39 +01:00
Christian Rinderknecht
7b9b6866b2
Merge branch 'dev' of gitlab.com:ligolang/ligo into rinderknecht-dev
2019-12-24 14:26:32 +01:00
Christian Rinderknecht
ce857fbe40
Fixed the [dune] files to build ParserMain.exe
2019-12-24 14:25:40 +01:00
Lesenechal Remi
bdd1d09c04
t_operator can not throw exceptions
2019-12-24 12:43:32 +01:00
Christian Rinderknecht
b0e92a58bf
Merge branch 'dev' of gitlab.com:ligolang/ligo into rinderknecht-dev
2019-12-24 11:59:34 +01:00
Sander Spies
29c96fb021
Fix 'dune build ParserMain.exe'.
2019-12-24 08:08:50 +01:00
Christian Rinderknecht
e6a9bf6510
Merge branch 'dev' of gitlab.com:ligolang/ligo into rinderknecht-dev
2019-12-23 21:46:21 +01:00
Christian Rinderknecht
24f067b69e
Added nat and bytes to ReasonLIGO and CameLIGO (expressions).
...
Use the correct ParserAPI for ReasonLIGO now.
2019-12-23 20:37:48 +01:00
John David Pressman
1bf04574c1
Merge branch 'dev' into feature/set-delegate
2019-12-20 08:37:01 -08:00
Christian Rinderknecht
705b425589
Merge remote-tracking branch 'origin/dev' into rinderknecht-dev
2019-12-20 16:46:33 +01:00
Christian Rinderknecht
072dea757c
[WIP] Adding the infrastructure for supporting the incremental API of Menhir.
...
* I added CLI option "--mono" to select the monolithic API of Menhir.
* I added a field "win" to the state of the lexer (a two-token
window for error reporting).
* I escaped LIGO strings before making them OCaml strings (for
example for printing).
2019-12-20 16:44:03 +01:00
Lesenechal Remi
638b45611d
fix message of redundant_match_case error
2019-12-20 12:17:47 +00:00
Suzanne Dupéron
f7616b7b49
Small improvements to negative typer tests
2019-12-19 17:27:17 +00:00
Suzanne Dupéron
a835bc9286
Added "did you mean" feature for unbound type names
2019-12-19 17:27:17 +00:00
Suzanne Dupéron
e919a1eba3
Fixes unsoundness in old typer (expected type for the expression as a whole was not checked for ascriptions)
2019-12-19 17:27:17 +00:00
Sander
600ae2d4f6
Move to Trace.error instead of simple_error.
2019-12-19 13:50:57 +00:00
Christian Rinderknecht
3add77eba5
Adding the build of the unlexer by dune.
2019-12-18 22:17:49 +00:00
Christian Rinderknecht
d47ec7cf7c
Fixed a tag file (local build of PascaLIGO with my Makefile).
2019-12-18 22:17:49 +00:00
Tom Jack
172038cef0
Kill warning 45 by reusing Pervasives.result for Trace
2019-12-18 21:20:35 +00:00
Christian Rinderknecht
c46bf008c8
Adding the build of the unlexer by dune.
2019-12-18 21:32:12 +01:00
Christian Rinderknecht
64f04b8c40
Fixed a tag file (local build of PascaLIGO with my Makefile).
2019-12-18 16:53:32 +01:00
Christian Rinderknecht
97a6d7162f
Regression.
2019-12-18 15:50:42 +01:00
Christian Rinderknecht
c7bd986772
Merge remote-tracking branch 'origin/dev' into rinderknecht-dev
2019-12-18 14:22:57 +01:00
Sander Spies
7518005532
Merge branch 'dev' of https://gitlab.com/ligolang/ligo into reasonligo-improvemtns
2019-12-18 09:59:19 +01:00
John David Pressman
310dde6dc9
[LIGO-286] Tuple destructuring doesn't do left hand type inference in CameLIGO
2019-12-17 21:04:53 +00:00
John David Pressman
7067644b1d
Merge branch 'dev' into feature/set-delegate
2019-12-17 12:17:02 -08:00
John David Pressman
a4b1c9951d
Add ReasonLIGO and CameLIGO tests for SET_DELEGATE
2019-12-17 09:50:47 -08:00
John David Pressman
fdeb95288d
Passing SET_DELEGATE test for PascaLIGO
2019-12-17 09:34:05 -08:00
Christian Rinderknecht
078dd06132
Merge branch 'rinderknecht-dev' of gitlab.com:ligolang/ligo into rinderknecht-dev
2019-12-17 17:07:10 +01:00
Christian Rinderknecht
7ae8d9340b
Merge remote-tracking branch 'origin/dev' into rinderknecht-dev
2019-12-17 17:04:59 +01:00
Christian Rinderknecht
8210a4e186
Added basic support for Menhir's incremental API.
...
I added the token Bytes to ReasonLIGO's [LexToken.mll] for the build.
2019-12-17 17:03:43 +01:00
Christian Rinderknecht
757b0da78c
Removed the open type [Error.t] (less [assert false]).
...
I also had to remove the keywords [Down], [Fail] and [Step] in
PascaLIGO that made a mysterious and unwanted come back. (I did not
bother with [git blame]).
2019-12-17 15:58:27 +00:00
Christian Rinderknecht
531dd238a7
Added unlexer for PascaLIGO.
2019-12-17 15:58:27 +00:00
Christian Rinderknecht
35d4b64a02
Removed the open type [Error.t] (less [assert false]).
...
I also had to remove the keywords [Down], [Fail] and [Step] in
PascaLIGO that made a mysterious and unwanted come back. (I did not
bother with [git blame]).
2019-12-17 14:56:16 +01:00
Sander Spies
ebba74e7a7
Merge branch 'dev' of https://gitlab.com/ligolang/ligo into reasonligo-improvemtns
2019-12-17 14:34:58 +01:00
Lesenechal Remi
ffb225e269
fix address arity and update test
2019-12-17 11:10:29 +01:00
John David Pressman
20285f2b9e
Add broken set_delegate test to LIGO, get to typer error
2019-12-16 16:26:39 -08:00
John David Pressman
fb8fae05d7
Fix IMPLICIT_ACCOUNT, again and this time add regression expect test
2019-12-16 12:10:31 -08:00
Sander Spies
52eff4e764
Incorrect function arguments message for ReasonLIGO.
2019-12-16 18:04:15 +01:00
Christian Rinderknecht
257ef4f5d2
Added unlexer for PascaLIGO.
2019-12-16 17:37:46 +01:00
Sander Spies
09875cf1da
Make type_expr_simple less complicated.
2019-12-16 14:54:12 +01:00
Christian Rinderknecht
a94ee53fd3
Finished the refactoring of the parsers.
2019-12-15 20:59:04 +01:00
Christian Rinderknecht
f8d6396fcd
Refactoring of the parsers
...
* [CameLIGO/ReasonLIGO] The AST node [EAnnot] (expressions
annotated by a type) now records the region in the source
code for the colon.
* [CameLIGO/ReasonLIGO/PascaLIGO] I added the syntax
%token <...> TOKEN "lexeme"
* [ReasonLIGO] I changed the AST nodes [Mtz] and [Str] to
[Mutez] and [String], respectively (in accordance with the
PascaLIGO front-end). I changed token [DOTDOTDOT] to
[ELLIPSIS].
* [ReasonLIGO] I added what was missing to make a loca build
with my Makefile.
2019-12-15 17:46:08 +01:00
Christian Rinderknecht
6692643cc5
Streamlined LexerMain and ParserMain for ReasonLIGO.
2019-12-13 17:28:15 +01:00
Christian Rinderknecht
e685e313f0
Fixed the build after I made a small error when fixing the latest
...
merge conflict.
2019-12-13 12:30:59 +01:00
Christian Rinderknecht
c7ffa6d563
Merge remote-tracking branch 'origin/dev' into rinderknecht-dev
2019-12-13 12:28:33 +01:00
Christian Rinderknecht
0226b9f23c
Refactoring of comments (for [dune build @doc]).
...
Refactoring of parsing command-line arguments
* The type [options] is now abstract and implemented as an
object type to avoid struggling with scoping and type
inference when record types share some common field names.
Refactoring of ParserLog for PascaLIGO and CameLIGO
* The immediate motivation behind that refactoring was to
remove the use of a couple of global references. A
consequence is that we have a nicer and more compact code, by
threading a state. The files [pascaligo/Tests/pp.ligo] and
[ligodity/Tests/pp.mligo].
* Another consequence is that the choice of making strings from
AST nodes depends on the CLI (offsets? mode?). After this
refactoring, that choice is hardcoded in the simplifiers in a
few places (TODO), waiting for a general solution that would
have all CL options flow through the compiler.
* I removed the use of vendors [x_option.ml], [x_map.ml] and
[x_list.ml] when handling optional values. (Less dependencies
this way.)
Refactoring of the ASTs
* I removed the node [local_decl], which was set to [[]]
already in a previous commit (which removed local
declarations as being redundant, as statements could already
be instructions or declarations).
* I changed [StrLit] to [String] in the AST of CameLIGO and
ReasonLIGO.
* I also changed the type [fun_expr] so now either a block is
present, and therefore followed by the [with] keyword, or it
is not. (Before, the presence of a block was not enforced in
the type with the presence of the keyword.)
Notes
* [LexerMain.ml] and [ParserMain.ml] for CameLIGO and PascaLIGO
are almost identical and differ in the same way (language
name and file extension), which suggests that they should be
in the [shared] folder and instanciated as a functor in the
future (TODO).
* I removed the blank characters at the end of many lines in
the parser of ReasonLIGO.
2019-12-13 12:21:52 +01:00
Sander Spies
6f9134834f
Remove original Cameligo and rename Ligodity to Cameligo.
2019-12-12 14:35:07 +01:00
Lesenechal Remi
df0dfb029b
better error message when a contract in invalid
2019-12-11 20:02:54 +01:00
Lesenechal Remi
85cffdfc52
remove comented function
2019-12-10 15:58:53 +01:00
Lesenechal Remi
26f26171e6
Tests clean
2019-12-10 15:58:53 +01:00
Lesenechal Remi
0cae4302cd
WIP: introduce compiled_expression and unify dry-run and compile-contract
2019-12-10 15:58:53 +01:00
Lesenechal Remi
8edeb27321
add a function to fetch (param,storage) in a contract's lambda
2019-12-10 15:58:53 +01:00
Sander
95a7e19be6
Add ReasonLIGO support
2019-12-10 13:47:31 +00:00
Christian Rinderknecht
04a770e22d
To enable local builds of the PascaLIGO parser.
2019-12-09 15:52:17 +00:00
John David Pressman
f043135df1
Add Michelson map membership to CameLIGO and PascaLIGO
2019-12-06 09:35:08 -08:00
Pierre-Emmanuel Wulfman
034c92a64c
Use ADT for types and move type to ast_common
...
and Making name, type_variable, built-in, constructor, label and string uncompatible types in ligo (weird bug with types in ligodity)
2019-12-04 11:40:58 +00:00
John David Pressman
085a756ed3
Fix bug where tuples are destructured with the members in the wrong order
2019-12-03 10:49:58 -08:00
John David Pressman
8609196bac
Fix IMPLICIT_ACCOUNT
2019-12-03 00:00:01 -08:00
John David Pressman
0b3e057819
Add self address to CameLIGO and PascaLIGO
2019-12-01 21:56:49 +00:00
John David Pressman
03dd86c9ad
Expose address operator in PascaLIGO and CameLIGO
2019-12-01 21:56:49 +00:00
John David Pressman
694c3aea97
Add implicit_account to operators
2019-12-01 21:56:49 +00:00
Gabriel Alfour
c1dac64af3
Merge branch 'feature/inlining2' into 'dev'
...
Substitution-based inlining
See merge request ligolang/ligo!227
2019-11-29 14:17:25 +00:00
Tom Jack
49586b65be
Type subtraction also as nat->int->int and int->nat->int
2019-11-28 06:48:24 -06:00
Tom Jack
06603b594a
Mini_c: Identify more pure constants
2019-11-27 09:06:36 -06:00
Tom Jack
66d2cda107
Mini_c: Inlining optimization
2019-11-27 09:06:31 -06:00
Rémi Lesenechal
48bef70a6a
Merge branch 'record-accesses-fix' into 'dev'
...
Broken nested access to record
See merge request ligolang/ligo!225
2019-11-26 18:09:06 +00:00
Lesenechal Remi
c1c551e33f
fix and more tests
2019-11-26 18:08:53 +01:00
Lesenechal Remi
848b902cd9
generated variable name typo
2019-11-26 17:49:23 +01:00
Tom Jack
e16ddf7ddc
Merge branch 'region-invalid' into 'dev'
...
Fix a Region.Invalid error in Cameligo simplifier
See merge request ligolang/ligo!214
2019-11-22 21:53:59 +00:00
Rémi Lesenechal
c7dfd54f7e
Resolve "Error when dry-running a contract (having a storage which contains a lambda)"
2019-11-22 20:28:55 +00:00