digitalmars.D.learn - What is the point of D_Version2
- Derek Parnell (20/20) Sep 02 2007 Okay, I just don't get it.
- Derek Parnell (10/10) Sep 02 2007 On Sun, 2 Sep 2007 22:50:32 +1000, Derek Parnell wrote:
- Bill Baxter (12/21) Sep 02 2007 Can you work around it by separating the aliases out into separate v1
- Witold Baryluk (10/30) Sep 02 2007 Unfortunetly this is correct behavior.
- 0ffh (3/8) Sep 02 2007 Um, I see it's a pain. Surely you know the string mixin workaround?
- 0ffh (18/19) Sep 02 2007 Someone posted it somewhere at some time.
- Kirk McDonald (17/31) Sep 02 2007 For the record, the string mixin workaround looks like this:
- torhu (4/25) Sep 02 2007 Have you read this thread? Thomas Kuehne explains how to write code
Okay, I just don't get it. This code below doesn't compile in V1 dmd. version(D_Version2) { alias const(wchar)[] wstring; alias const(dchar)[] dstring; } else { alias char[] string; alias wchar[] wstring; alias dchar[] dstring; } I can understand why - because the first two alias declarations have invalid V1 syntax - but doesn't that make the whole D_Version2 thing pointless? -- Derek Parnell Melbourne, Australia skype: derek.j.parnell
Sep 02 2007
On Sun, 2 Sep 2007 22:50:32 +1000, Derek Parnell wrote: P.S. I finally got Bud to compile using V2 after about a thousand tiny changes and now I want to tweak so I can also compile the same source in V1. Needless to say, but there will be a slight delay in the next Bud release until I sort out this next bloody irritation. -- Derek Parnell Melbourne, Australia skype: derek.j.parnell
Sep 02 2007
Derek Parnell wrote:On Sun, 2 Sep 2007 22:50:32 +1000, Derek Parnell wrote: P.S. I finally got Bud to compile using V2 after about a thousand tiny changes and now I want to tweak so I can also compile the same source in V1. Needless to say, but there will be a slight delay in the next Bud release until I sort out this next bloody irritation.Can you work around it by separating the aliases out into separate v1 and v2 d-files? Like version(D_Version2) { import v2types; } else { import v1types; } --bb
Sep 02 2007
Dnia Sun, 2 Sep 2007 22:50:32 +1000 Derek Parnell <derek psych.ward> napisa=B3/a:Okay, I just don't get it. =20 This code below doesn't compile in V1 dmd. =20 version(D_Version2) { alias const(wchar)[] wstring; alias const(dchar)[] dstring; } else { alias char[] string; alias wchar[] wstring; alias dchar[] dstring; } =20 =20 I can understand why - because the first two alias declarations have invalid V1 syntax - but doesn't that make the whole D_Version2 thing pointless?Unfortunetly this is correct behavior. Even when D_Version2 is undefined, anything which is inside must be syntacticly correct. const(wchar) is incorrect for D1. :/ --=20 Witold Baryluk, aleph0 MAIL: baryluk smp.if.uj.edu.pl JID: movax jabber.autocom.pl
Sep 02 2007
Derek Parnell wrote:This code below doesn't compile in V1 dmd. [...] I can understand why - because the first two alias declarations have invalid V1 syntax - but doesn't that make the whole D_Version2 thing pointless?Um, I see it's a pain. Surely you know the string mixin workaround? Regards, Frank
Sep 02 2007
0ffh wrote:Um, I see it's a pain. Surely you know the string mixin workaround?Someone posted it somewhere at some time. I currently use this for strings: ---<snip>--- version (D_Version2) { mixin("alias invariant(char)* icptr;"); alias char* cptr; } else { alias char* icptr; alias char* cptr; alias char[] string; } ---<snap>--- Or were you just complaining about the lack of elegance here? Regards, Frank
Sep 02 2007
0ffh wrote:Derek Parnell wrote:For the record, the string mixin workaround looks like this: version (D_Version2) { mixin("alias const(char)* c_str;"); } else { alias char* c_str; } You can find this code near the top of the Python header. http://dsource.org/projects/pyd/browser/trunk/infrastructure/python/python.d So far as I can tell, I was the first person to come up with (or at least use) this workaround, but others may have come up with it on their own. -- Kirk McDonald http://kirkmcdonald.blogspot.com Pyd: Connecting D and Python http://pyd.dsource.orgThis code below doesn't compile in V1 dmd. [...] I can understand why - because the first two alias declarations have invalid V1 syntax - but doesn't that make the whole D_Version2 thing pointless?Um, I see it's a pain. Surely you know the string mixin workaround? Regards, Frank
Sep 02 2007
Derek Parnell wrote:Okay, I just don't get it. This code below doesn't compile in V1 dmd. version(D_Version2) { alias const(wchar)[] wstring; alias const(dchar)[] dstring; } else { alias char[] string; alias wchar[] wstring; alias dchar[] dstring; } I can understand why - because the first two alias declarations have invalid V1 syntax - but doesn't that make the whole D_Version2 thing pointless?Have you read this thread? Thomas Kuehne explains how to write code that works in both D 1 and 2. http://www.digitalmars.com/d/archives/digitalmars/D/supporting_DMD-1.016_and_DMD-2.000_with_the_same_source_code_54628.html
Sep 02 2007