ocaml/lambda
Gabriel Scherer 82b29828d2
Allow `[@tailcall true]` and `[@tailcall false]` (#9754)
* remove the unused is_native_tail_call_heuristic forward reference

This forward-reference from Lambda to Asmcomp was used to generate
machine-specific tailcall information in -annot output; this only use
was removed in 57d329e07b, so we can now
remove it to simplify the codebase.

The logic was non-trivial and might be useful again in the future.

* [minor] testsuite: convert warnings/w51.ml to an expect-test

* [minor] translattribute: refactor attribute payload deconstruction

* [@tailcall false]: warn if the call *is* a tailcall

(+ constructor renaming suggested by Nicolás during review)

* Changes

* testsuite: add an example with the 'invalid payload' exception

(suggested by Nicolás during review)
2020-10-10 13:41:39 +02:00
..
.ocamlformat matching: enable ocamlformat 2019-06-11 12:26:56 +01:00
.ocamlformat-enable matching: enable ocamlformat 2019-06-11 12:26:56 +01:00
debuginfo.ml Replace Location.t with Lambda.scoped_location in Lambda code 2020-04-27 12:58:53 +01:00
debuginfo.mli Replace Location.t with Lambda.scoped_location in Lambda code 2020-04-27 12:58:53 +01:00
dune Move some middle-end files around (#2281) 2019-04-01 17:18:47 +01:00
generate_runtimedef.sh Improve shell scripts (#1690) 2019-06-19 16:15:02 +02:00
lambda.ml Allow `[@tailcall true]` and `[@tailcall false]` (#9754) 2020-10-10 13:41:39 +02:00
lambda.mli Allow `[@tailcall true]` and `[@tailcall false]` (#9754) 2020-10-10 13:41:39 +02:00
matching.ml matching: a first-order representation for match-failure handling 2020-07-08 22:38:47 +02:00
matching.mli pass a proper location to Matching.for_trywith 2020-07-08 22:38:10 +02:00
printlambda.ml Allow `[@tailcall true]` and `[@tailcall false]` (#9754) 2020-10-10 13:41:39 +02:00
printlambda.mli Move some middle-end files around (#2281) 2019-04-01 17:18:47 +01:00
runtimedef.mli Move some middle-end files around (#2281) 2019-04-01 17:18:47 +01:00
simplif.ml Allow `[@tailcall true]` and `[@tailcall false]` (#9754) 2020-10-10 13:41:39 +02:00
simplif.mli Allow `[@tailcall true]` and `[@tailcall false]` (#9754) 2020-10-10 13:41:39 +02:00
switch.ml Replace Location.t with Lambda.scoped_location in Lambda code 2020-04-27 12:58:53 +01:00
switch.mli Replace Location.t with Lambda.scoped_location in Lambda code 2020-04-27 12:58:53 +01:00
translattribute.ml Allow `[@tailcall true]` and `[@tailcall false]` (#9754) 2020-10-10 13:41:39 +02:00
translattribute.mli [refactoring] gives tailcall attributes a more standard structure 2020-06-08 15:39:50 +02:00
translclass.ml [refactoring] gives tailcall attributes a more standard structure 2020-06-08 15:39:50 +02:00
translclass.mli Replace Location.t with Lambda.scoped_location in Lambda code 2020-04-27 12:58:53 +01:00
translcore.ml Introduce warning 68 to warn about hidden allocation due to pattern match of mutable field in curried functions (#9751) 2020-08-17 09:47:36 +01:00
translcore.mli [refactoring] gives tailcall attributes a more standard structure 2020-06-08 15:39:50 +02:00
translmod.ml Fix PR#7538 2020-09-18 09:38:08 +01:00
translmod.mli a better representation for modules with no name (#8908) 2019-10-09 14:15:37 +01:00
translobj.ml Replace Location.t with Lambda.scoped_location in Lambda code 2020-04-27 12:58:53 +01:00
translobj.mli Move some middle-end files around (#2281) 2019-04-01 17:18:47 +01:00
translprim.ml Better backtraces for lazy values 2020-06-14 07:57:35 +01:00
translprim.mli Replace Location.t with Lambda.scoped_location in Lambda code 2020-04-27 12:58:53 +01:00