[Issue 14948] [Reg 2.068.0] AA key requirement was broken w/o notice and w/ horrible error message

2015-09-07 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14948

--- Comment #8 from github-bugzi...@puremagic.com ---
Commits pushed to master at https://github.com/D-Programming-Language/dmd

https://github.com/D-Programming-Language/dmd/commit/5c1d3c5b63394b7d3758f86a53eace6ffb3d3165
fix Issue 14948 - AA key requirement was broken w/o notice and w/ horrible
error message

https://github.com/D-Programming-Language/dmd/commit/880f45dafe5b45951f5b30d188130b32250d6e31
Merge pull request #5001 from 9rnsr/fix14948

--


[Issue 14948] [Reg 2.068.0] AA key requirement was broken w/o notice and w/ horrible error message

2015-09-02 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14948

--- Comment #7 from github-bugzi...@puremagic.com ---
Commits pushed to stable at https://github.com/D-Programming-Language/dmd

https://github.com/D-Programming-Language/dmd/commit/5c1d3c5b63394b7d3758f86a53eace6ffb3d3165
fix Issue 14948 - AA key requirement was broken w/o notice and w/ horrible
error message

https://github.com/D-Programming-Language/dmd/commit/880f45dafe5b45951f5b30d188130b32250d6e31
Merge pull request #5001 from 9rnsr/fix14948

[REG2.068] Issue 14948 - AA key requirement was broken w/o notice and w/
horrible error message

--


[Issue 14948] [Reg 2.068.0] AA key requirement was broken w/o notice and w/ horrible error message

2015-08-31 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14948

--- Comment #4 from Kenji Hara  ---
(In reply to Steven Schveighoffer from comment #3)
> 2. Error message is horrible, we need to know where the AA was instantiated
> to be able to fix this.

With my reduced test case, the error message prints line 4, it's where the AA
type int[HTTP] is declared.

--


[Issue 14948] [Reg 2.068.0] AA key requirement was broken w/o notice and w/ horrible error message

2015-08-31 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14948

Kenji Hara  changed:

   What|Removed |Added

   Keywords||pull

--- Comment #6 from Kenji Hara  ---
https://github.com/D-Programming-Language/dmd/pull/5001

--


[Issue 14948] [Reg 2.068.0] AA key requirement was broken w/o notice and w/ horrible error message

2015-08-31 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14948

Kenji Hara  changed:

   What|Removed |Added

  Component|phobos  |dmd

--- Comment #5 from Kenji Hara  ---
OK, I noticed this is a compiler issue.

Usually D compiler automatically generates toHash member function by using
TypeInfo.getHash function. But in particular case it had not worked.


Reduced test case:

struct RefCounted(T)
{
struct Impl
{
T data;
}
Impl* impl;

@property ref T payload() { return impl.data; }

alias payload this;
}

struct HTTP
{
struct Impl
{
}

RefCounted!Impl p;
}

void main()
{
int[HTTP] aa;
}

The root problem is very similar to issue 14806.

--


[Issue 14948] [Reg 2.068.0] AA key requirement was broken w/o notice and w/ horrible error message

2015-08-25 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14948

Steven Schveighoffer schvei...@yahoo.com changed:

   What|Removed |Added

 CC||schvei...@yahoo.com

--- Comment #3 from Steven Schveighoffer schvei...@yahoo.com ---
I think there are 2 separate issues here:

1. HTTP struct is not correct
2. Error message is horrible, we need to know where the AA was instantiated to
be able to fix this.

Can we have an issue for each?

--


[Issue 14948] [Reg 2.068.0] AA key requirement was broken w/o notice and w/ horrible error message

2015-08-24 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14948

Kenji Hara k.hara...@gmail.com changed:

   What|Removed |Added

   Keywords||rejects-valid
  Component|dmd |phobos

--- Comment #2 from Kenji Hara k.hara...@gmail.com ---
Changed to Phobos issue.

--


[Issue 14948] [Reg 2.068.0] AA key requirement was broken w/o notice and w/ horrible error message

2015-08-24 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14948

--- Comment #1 from Kenji Hara k.hara...@gmail.com ---
The reproduce case I can guess (HTTP is a struct in std.net.curl):

void main()
{
import std.net.curl;
int[HTTP] aa;
}

The error message AA key type X supports const equality but doesn't support
const hashing has introduced from 2.066.

http://dlang.org/changelog/2.066.0.html#aa-key-requirement

If a struct has elaborate equality but doesn't have corresponding hash
calculation, the error will be reported to avoid silent AA behavior breaking.

When we change the requirement for AA key from ordering to equality, we decided
to change everything at once. Therefore no deprecation pass had been introduced
there.

In 2.068, issue 14806 has been fixed. HTTP struct is defined as follows:

struct HTTP {
...
private RefCounted!Impl p;
}

By that bug fix, it's silently changed to a struct which has elaborate
field-wise equality without corresponding toHash method.

In short, it's a problem in the definition of HTTP struct. It had had to be
detected and fixed before the 2.066 release, but unfortunately it wasn't.

--