[Issue 1594] New: version not honored for invarient declaration

d-bugmail at puremagic.com d-bugmail at puremagic.com
Thu Oct 18 22:19:17 PDT 2007


http://d.puremagic.com/issues/show_bug.cgi?id=1594

           Summary: version not honored for invarient declaration
           Product: D
           Version: 1.022
          Platform: PC
        OS/Version: Windows
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla at digitalmars.com
        ReportedBy: jemandy at earthlink.net


The following program does not compile in 1.022.  The error message is
"invar.d(6): statement expected to be { }, not int".

import std.stdio;

version (D_Version2)
{
        string str = "Version 2";
        invariant int myint = 2;
}
else
{
        string str = "Version 1";
        const int myint = 1;
}

void main()
{
        writefln( "str: %s\nmyint: %s", str, myint );
        return;
}

Notice that a version 1 compiler shouldn't be trying to compile the statement
where the error occurs: it's in a block designated as being for a different
version of the compiler.  Change the single occurrence of if "invariant" to
"const", and it compiles fine.  With this change, the output of the program is 

str: Version 1
myint: 1

just as you would hope.


-- 



More information about the Digitalmars-d-bugs mailing list