digitalmars.D.bugs - [Issue 4325] New: invariant syntax isn't strict
- d-bugmail puremagic.com (35/35) Jun 15 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4325
- d-bugmail puremagic.com (48/48) Aug 29 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4325
- d-bugmail puremagic.com (14/14) Jun 15 2011 http://d.puremagic.com/issues/show_bug.cgi?id=4325
- d-bugmail puremagic.com (9/12) Jun 15 2011 http://d.puremagic.com/issues/show_bug.cgi?id=4325
- d-bugmail puremagic.com (7/10) Jun 15 2011 A new report. Changing the focus of old reports makes it more difficult...
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
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
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
http://d.puremagic.com/issues/show_bug.cgi?id=4325This 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
http://d.puremagic.com/issues/show_bug.cgi?id=4325I 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









d-bugmail puremagic.com 