Derek Parnell wrote:
On Tue, 10 Feb 2009 13:14:24 -0800, Walter Bright wrote:

The version statement is designed to be inflexible. It's designed to encourage abstracting and modularizing version differences, rather than encouraging line-by-line differences.

I understand and support this view. However, it creates a new problem; code
duplication. Is it possible to provide some syntax or technique to avoid
having to cut&paste /small/ runs of code lines. Larger sections of code can
be separated into functions or modules, but it because problematic when
dealing with small sections (a few lines) of code. The overheads of
function calling can be an issue.

I don't think that duplicating a small run of code is a problem. If it's larger than a small run, it can be abstracted into a function (the overhead is not an issue, as small functions are inlined).



5. Why can't one 'version out' syntax that is not recognized by the compiler?

The problem is that supporting this requires semantic analysis in order to successfully lex and parse the source code. Breaking this will make the lexing and parsing an order of magnitude harder for third party tools to do.

Agreed, this is a problem. How can it be solved?

The problem is often found when supporting V1 and V2 code in the same
source file. The string mixin trick is NOT, repeat NOT, a satisfactory
solution.

I agree that the mixin trick is horrific.

Duplicating (nearly all of a) source file is NOT, repeat NOT, a
satisfatory solution.

I'm not insensitive to this as I do it myself in maintaining Phobos. It is a problem, but not a huge one. I find that the meld utility (on linux) makes this chore a snap.

Reply via email to