www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 4325] New: invariant syntax isn't strict

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4325

           Summary: invariant syntax isn't strict
           Product: D
           Version: D2
          Platform: x86
        OS/Version: Windows
            Status: NEW
          Keywords: accepts-invalid
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody puremagic.com
        ReportedBy: bearophile_hugs eml.cc



Class/struct invariants are:
http://www.digitalmars.com/d/2.0/class.html#Invariant
    invariant() BlockStatement


But dmd v2.047 compiles this with no errors:


struct Foo {
    invariant {}
}
struct Bar {
    invariant
}
class CFoo {
    invariant {}
}
class CBar {
    invariant
}
void main() {}


See also the second part of the bug 3856

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jun 15 2010
next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4325


Andrej Mitrovic <andrej.mitrovich gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |andrej.mitrovich gmail.com



20:01:39 PDT ---
The compiler will still print an error if you add any statements below a class
invariant, e.g.:

struct Foo {
    invariant {}
}
struct Bar {
    int x = 5;
    invariant
        assert(x == 1);
}
class CFoo {
    invariant {}
}
class CBar {
    invariant
}
void main() 
{
    Bar bar;
}

bug4325.d(7): Declaration expected, not 'assert'


So it might not be that bad. The same thing happens if you put "const" "pure"
"immutable" without any opening braces or colons, e.g.:

struct Foo {
    pure
}
struct Bar {
    const
}
class CFoo {
    immutable
}
class CBar {
    invariant
}
void main() 
{
}

Compiles fine.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Aug 29 2010
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4325


yebblies <yebblies gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |yebblies gmail.com
         Resolution|                            |INVALID



This has nothing to do with class invariants.  This is caused by invariant
currently being an alias for immutable.  Change invariant to immutable in the
examples and it will make sense.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jun 15 2011
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4325





 This has nothing to do with class invariants.  This is caused by invariant
 currently being an alias for immutable.  Change invariant to immutable in the
 examples and it will make sense.
I see, thank you. Do you want me to open a new enhancement request where I ask for the removal of this alias, or do you prefer me to reopen and rename this bug report? -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 15 2011
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4325




 I see, thank you. Do you want me to open a new enhancement request where I ask
 for the removal of this alias, or do you prefer me to reopen and rename this
 bug report?
A new report. Changing the focus of old reports makes it more difficult to process them. (for me at least) -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 15 2011