digitalmars.D - Help building Mango on Windows
-
mrw
(34/34)
Feb 15 2006
- Kris (53/92) Feb 15 2006 This is a bizarre one.
- Walter Bright (2/3) Feb 16 2006 Can you do shrink on it into one file?
<NewDUser>
I'm trying to build Mango on Windows. Yesterday I used SVN to get the
latest source. When I run 'build mango' I get compile errors in mango.io:
C:\dmd\mango\mango\io\Writer.d(701): constructor
mango.io.Writer.NewlineWriter.this () does not match argument types (void[])
C:\dmd\mango\mango\io\FileConst.d(59): cannot implicitly convert expression
("\x0d\x0a") of type void[] to char[]
C:\dmd\mango\mango\io\Stdout.d(149): template instance cannot resolve
forward reference
C:\dmd\mango\mango\io\Stdout.d(149): UnicodeImporter!(...) is used as a type
C:\dmd\mango\mango\io\Stdout.d(149): new can only create structs, dynamic
arrays or class objects, not void's
C:\dmd\mango\mango\io\Stdout.d(149): function
mango.io.Writer.Writer.setEncoder(AbstractEncoder) does not match argument
types (void*)
C:\dmd\mango\mango\io\Stdout.d(149): cannot implicitly convert expression
(new UnicodeImporter!(...)((Cout))) of type void* to
mango.io.model.IBuffer.AbstractEncoder
C:\dmd\mango\mango\io\Stdout.d(150): template instance cannot resolve
forward reference
C:\dmd\mango\mango\io\Stdout.d(150): UnicodeImporter!(char) is used as a
type
C:\dmd\mango\mango\io\Stdout.d(150): new can only create structs, dynamic
arrays or class objects, not void's
C:\dmd\mango\mango\io\Stdout.d(150): function
mango.io.Writer.Writer.setEncoder(AbstractEncoder) does not match argument
types (void*)
C:\dmd\mango\mango\io\Stdout.d(150): cannot implicitly convert expression
(new UnicodeImporter!(char)((Cerr))) of type void* to
mango.io.model.IBuffer.AbstractEncoder
Can anyone suggest a solution? I'm using DMD 0.145
</NewDUser>
Thanks,
Mark
Feb 15 2006
This is a bizarre one.
JJR noticed the same issue on linux recently and I took a look at it
yesterday. Here's where the error occurs:
class NewlineWriter : INewlineWriter
{
private char[] fmt;
this ()
{
version (Posix)
this (cast(char[]) FileConst.NewlineString);
else
this (FileConst.NewlineString); // ******* ERROR HERE!
}
this (char[] fmt)
{
this.fmt = fmt;
}
}
and here's the FileConst reference:
struct FileConst
{
version (Win32)
{
static const char PathSeparatorChar = '\\';
static const char FileSeparatorChar = '.';
static const char RootSeparatorChar = ':';
static const char[] PathSeparatorString = "\\";
static const char[] FileSeparatorString = ".";
static const char[] RootSeparatorString = ":";
static const char[] NewlineString = "\r\n";
}
version (Posix)
{
static const char PathSeparatorChar = '/';
static const char FileSeparatorChar = '.';
static const char RootSeparatorChar = ':';
static const char[] PathSeparatorString = "/";
static const char[] FileSeparatorString = ".";
static const char[] RootSeparatorString = ":";
static const char[] NewlineString = "\n";
}
}
As you can see, I hacked the Posix version to "recast" FileConst.Newline
into a char[], even though it's clearly declared as one to begin with. The
'recast' gets rid of the error, but I've absolutely no idea why it happens.
Perhaps Walter could shed some light on this?
To get around it for now, do the stupid 'recast' for the Win32 version also.
It's really odd that this just started happening, with no changes to the
related code, and only in this one very specific instance (other references
to FileConst are just fine!)
- Kris
"mrw" <mark binarytheory.com> wrote in message
news:dt0d2q$21p3$1 digitaldaemon.com...
<NewDUser>
I'm trying to build Mango on Windows. Yesterday I used SVN to get the
latest source. When I run 'build mango' I get compile errors in
mango.io:
C:\dmd\mango\mango\io\Writer.d(701): constructor
mango.io.Writer.NewlineWriter.this () does not match argument types
(void[])
C:\dmd\mango\mango\io\FileConst.d(59): cannot implicitly convert
expression
("\x0d\x0a") of type void[] to char[]
C:\dmd\mango\mango\io\Stdout.d(149): template instance cannot resolve
forward reference
C:\dmd\mango\mango\io\Stdout.d(149): UnicodeImporter!(...) is used as a
type
C:\dmd\mango\mango\io\Stdout.d(149): new can only create structs, dynamic
arrays or class objects, not void's
C:\dmd\mango\mango\io\Stdout.d(149): function
mango.io.Writer.Writer.setEncoder(AbstractEncoder) does not match argument
types (void*)
C:\dmd\mango\mango\io\Stdout.d(149): cannot implicitly convert expression
(new UnicodeImporter!(...)((Cout))) of type void* to
mango.io.model.IBuffer.AbstractEncoder
C:\dmd\mango\mango\io\Stdout.d(150): template instance cannot resolve
forward reference
C:\dmd\mango\mango\io\Stdout.d(150): UnicodeImporter!(char) is used as a
type
C:\dmd\mango\mango\io\Stdout.d(150): new can only create structs, dynamic
arrays or class objects, not void's
C:\dmd\mango\mango\io\Stdout.d(150): function
mango.io.Writer.Writer.setEncoder(AbstractEncoder) does not match argument
types (void*)
C:\dmd\mango\mango\io\Stdout.d(150): cannot implicitly convert expression
(new UnicodeImporter!(char)((Cerr))) of type void* to
mango.io.model.IBuffer.AbstractEncoder
Can anyone suggest a solution? I'm using DMD 0.145
</NewDUser>
Thanks,
Mark
Feb 15 2006
"Kris" <fu bar.com> wrote in message news:dt0nms$2at8$1 digitaldaemon.com...Perhaps Walter could shed some light on this?Can you do shrink on it into one file?
Feb 16 2006








"Walter Bright" <newshound digitalmars.com>