digitalmars.D.bugs - [Issue 3086] New: TypeInfo opEquals returns incorrect results
- d-bugmail puremagic.com (45/45) Jun 21 2009 http://d.puremagic.com/issues/show_bug.cgi?id=3086
- d-bugmail puremagic.com (10/10) Jun 07 2010 http://d.puremagic.com/issues/show_bug.cgi?id=3086
- d-bugmail puremagic.com (10/10) Jun 07 2010 http://d.puremagic.com/issues/show_bug.cgi?id=3086
- d-bugmail puremagic.com (9/9) Jan 06 2011 http://d.puremagic.com/issues/show_bug.cgi?id=3086
- d-bugmail puremagic.com (10/10) Jan 06 2011 http://d.puremagic.com/issues/show_bug.cgi?id=3086
- d-bugmail puremagic.com (17/17) Apr 05 2011 http://d.puremagic.com/issues/show_bug.cgi?id=3086
http://d.puremagic.com/issues/show_bug.cgi?id=3086 Summary: TypeInfo opEquals returns incorrect results Product: D Version: 1.045 Platform: x86 OS/Version: Linux Status: NEW Severity: major Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: nfxjfg gmail.com If a and b are TypeInfo, a==b can return true, even if a and b refer to different types (and object instances). Both Phobos and Tango are affected. The code example at the end of this report demonstrates this. The second assertion fails, because opEquals() returns true when comparing two different TypeInfos. This is because opEquals compares the two TypeInfo by their toString() results. The returnd string doesn't contain any information about the delegate parameters, ths delegates with the same return type are considered equal. I wonder if TypeInfo.opEquals() shouldn't only compare the addresses of the TypeInfo objects. The string comparision seems pointless, even if you use DLLs. With DLLs, you should either not attempt to use objects from another instance of the runtime, or you should use proper solutions like DDL, which enables to DLLs to share the same runtime. The string comparision hack is hard to get right, because the compiler needs just another method to encode the complete information about a type as string. (A better hack would be to compare the mangled symbol names.) //program will execute successfully if bug is fixed class X { void a() {} void b(int z, short c) {} } void main() { auto z = new X(); TypeInfo a = typeid(typeof(&z.a)); TypeInfo b = typeid(typeof(&z.b)); //doesn't fail (ok) assert(a !is b, "1"); //fails (which is wrong, because both TypeInfos are different!) assert(a != b, "2"); } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 21 2009
http://d.puremagic.com/issues/show_bug.cgi?id=3086 nfxjfg gmail.com changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |wrong-code Attributes such as pure are also ignored. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 07 2010
http://d.puremagic.com/issues/show_bug.cgi?id=3086 nfxjfg gmail.com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |bearophile_hugs eml.cc *** Issue 3831 has been marked as a duplicate of this issue. *** -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 07 2010
http://d.puremagic.com/issues/show_bug.cgi?id=3086 nfxjfg gmail.com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |WONTFIX -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 06 2011
http://d.puremagic.com/issues/show_bug.cgi?id=3086 Brad Roberts <braddr puremagic.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |REOPENED CC| |braddr puremagic.com Resolution|WONTFIX | -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 06 2011
http://d.puremagic.com/issues/show_bug.cgi?id=3086 Walter Bright <bugzilla digitalmars.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|REOPENED |RESOLVED CC| |bugzilla digitalmars.com Resolution| |FIXED 20:38:27 PDT --- Fixing this in D1 will produce some binary incompatibilities, so I'm going to just do a partial fix for it. Fixed for D2. https://github.com/D-Programming-Language/dmd/commit/27d23cf8952471d0023331a719174e0823a3a9fc https://github.com/D-Programming-Language/dmd/commit/cebc2fc0b3cf947372dd83f5c7b30f6a2c467799 https://github.com/D-Programming-Language/phobos/commit/4fe5c5c760af2ef0f61429bf0b9c128c2a663f9a https://github.com/D-Programming-Language/druntime/commit/a6c5d0c6fdc1b71c074e5cb3432597e99fb46a5f -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Apr 05 2011