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?

Reply via email to