Export statement?

Piotr Szturmaj bncrbme at jadamspam.pl
Tue Oct 16 14:43:52 PDT 2012


We have:

ImportExpression:
     import ( AssignExpression )

Why not also add this:

ExportStatement:
     export ( AssignExpression, AssignExpression )

Both of the AssignExpressions must evaluate at compile time to a 
constant string. The text contents of the first string are interpreted 
as a file name. The text contents of the second string are written to 
the file specified in the first argument, overwriting previous content 
if the file exists.

Implementations may restrict the file name in order to avoid security 
vulnerabilities. A possible restriction might be to allow only paths 
specified in the compiler option.

(the above was shamelessly copied from D docs and then modified)

Export keyword already exist, it's used only as protection attribute, so 
this proposal would not cause ambiguity.

About some use cases, off the top of my head:
- generating build scripts or their parts from the code.
- generating code to instantiate C++ templates when linking with C++ code.
- debugging complex ctfe function output, f.i. string to be mixed in 
(pragma(msg, ...) is a half solution).

What do you think?


More information about the Digitalmars-d mailing list