Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[patch] pa_macro: support local macros; expand in try..with.. #8350

Closed
vicuna opened this issue Oct 31, 2003 · 2 comments
Closed

[patch] pa_macro: support local macros; expand in try..with.. #8350

vicuna opened this issue Oct 31, 2003 · 2 comments

Comments

@vicuna
Copy link

vicuna commented Oct 31, 2003

Original bug ID: 1907
Reporter: administrator
Status: closed (set by @gasche on 2013-07-27T05:45:04Z)
Resolution: fixed
Priority: normal
Severity: feature
Fixed in version: 3.10.0
Category: ~DO NOT USE (was: OCaml general)
Monitored by: nogin

Bug description

Full_Name: Aleksety Nogin
Version: 3.07pl2
OS: Red Hat Linux
Submission from: charter-182-203.caltech.edu (131.215.182.203)

a) It would be nice if pa_macros supported "local" macros where definition is a
part of an expression, not a separate str_item.

For example:

....... some code .....
DEFINE body =
...
...
IN
IFDEF DEBUG_BUILD THEN
try body
with
.... print a lot of debug information ...
ELSE body ENDIF

While one could also write
try
...
...
with exn ->
IFDEF DEBUG_BUILD THEN
.... print a lot of debug information ...
ELSE
raise exn
ENDIF

the latter is likely to be compiled into much less efficient code in
non-DEBUG_BUILD case.

b) Currently macro parameters are not expanded inside "try .. with .."
expressions.

I have a small patch that implements "DEFINE ... IN" and fixes (b) -
http://nogin.org/patches/ocaml-3.07-macro-localdefine.patch

Note that the above patch is supposed to go on top of the four other pa_macro
patches I've submitted (#1901, #1902, #1904, and #1905). The end result
(pa_macro with all the patches applied) is also available on our CVS - please
see http://cvs.metaprl.org:12000/cvsweb/metaprl/util/Attic/pa_macro.ml?only_with_tag=ocaml_3_07

@vicuna
Copy link
Author

vicuna commented Jun 29, 2004

Comment author: administrator

Ok for b/. Need to think a bit more to "DEFINE x IN ..."
MM, 2004-06-29

@vicuna
Copy link
Author

vicuna commented Jul 27, 2013

Comment author: @gasche

DEFINE = IN was added in 3.10 -- I believe based on Aleksey's patch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant