[Issue 4825] Regression(1.057, 2.040) "Error: non-constant expression" with -inline

2010-09-09 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=4825


Don  changed:

   What|Removed |Added

 CC||clugd...@yahoo.com.au
Version|D1  |D1 & D2
Summary|"Error: non-constant|Regression(1.057, 2.040)
   |expression" with -inline|"Error: non-constant
   ||expression" with -inline


--- Comment #2 from Don  2010-09-09 14:09:58 PDT ---
Replace 'const' with 'static const' and this fails on D2.040 and later, but
passed on 2.039 and earlier.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 1001] print stack trace (in debug mode) when program die

2010-09-09 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=1001



--- Comment #30 from Sean Kelly  2010-09-09 13:32:47 
PDT ---
Okay, demangling added for Linux and OSX.  I'll try to make sure that
-L--export-dynamic is added to dmd.conf on Linux for the next release.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 4847] New: std.algorithm.topN documentation

2010-09-09 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=4847

   Summary: std.algorithm.topN documentation
   Product: D
   Version: D2
  Platform: All
OS/Version: All
Status: NEW
  Severity: minor
  Priority: P2
 Component: websites
AssignedTo: nob...@puremagic.com
ReportedBy: bearophile_h...@eml.cc


--- Comment #0 from bearophile_h...@eml.cc 2010-09-09 13:02:12 PDT ---
This program seems correct (DMD 2.048):

import std.algorithm: topN;
void main() {
int[] a = [10, 1, 7];
topN(a, 10);
}


I'd like the documentation of topN to specify what does it happen when the
specified 'nth' argument is bigger than the length of the given range.  

And I think it's better to add an usage example of topN(r1, r2).

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 4846] New: A problem with array of std.typecons.Tuple

2010-09-09 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=4846

   Summary: A problem with array of std.typecons.Tuple
   Product: D
   Version: D2
  Platform: x86
OS/Version: Windows
Status: NEW
  Severity: normal
  Priority: P2
 Component: DMD
AssignedTo: nob...@puremagic.com
ReportedBy: bearophile_h...@eml.cc


--- Comment #0 from bearophile_h...@eml.cc 2010-09-09 12:53:54 PDT ---
import std.typecons: Tuple;
alias Tuple!(int) Foo;
auto data = [Foo(1)];
void main() {}


DMD 2.048 shows:
Error: duplicate union initialization for _0

Additionally, there is no line number for the error.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 4329] Do not show error messages that refer to __error

2010-09-09 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=4329



--- Comment #12 from bearophile_h...@eml.cc 2010-09-09 12:49:36 PDT ---
struct Foo {
int x;
}
void main() {
Foo(5 ^^ 5); // line 5
}

DMD 2.048 shows:
test.d(5): Error: must import std.math to use ^^ operator
test.d(5): Error: structliteral has no effect in expression (Foo((__error)))

---

void foo() {}
void main() {
foreach (x; foo()[0 .. 1]) {}
}

DMD 2.048 shows:
test.d(3): Error: foo() cannot be sliced with []
test.d(3): Error: foreach: _error_ is not an aggregate type

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 4845] New: Bad error message with missing math import for ^^

2010-09-09 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=4845

   Summary: Bad error message with missing math import for ^^
   Product: D
   Version: D2
  Platform: x86
OS/Version: Windows
Status: NEW
  Keywords: diagnostic
  Severity: minor
  Priority: P2
 Component: DMD
AssignedTo: nob...@puremagic.com
ReportedBy: bearophile_h...@eml.cc


--- Comment #0 from bearophile_h...@eml.cc 2010-09-09 12:46:42 PDT ---
This D2 program is OK (dmd 2.048), the math import is required to perform the
^^:


import std.conv: to;
import std.math;
int foo(int b, int e) {
return b ^^ e;
}
void main() {
foo(5, 3);
}



If I remove the math import the program doesn't compile:

import std.conv: to;
int foo(int b, int e) {
return b ^^ e;
}
void main() {
foo(5, 3);
}


But the given error message is bad:
test.d(3): Error: undefined identifier module test.std

An error message like this is better:
test.d(5): Error: must import std.math to use ^^ operator

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 4844] New: _traits(allMembers, X) ignores version guards inside X

2010-09-09 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=4844

   Summary: _traits(allMembers, X) ignores version guards inside X
   Product: D
   Version: D2
  Platform: Other
OS/Version: Linux
Status: NEW
  Severity: normal
  Priority: P2
 Component: DMD
AssignedTo: nob...@puremagic.com
ReportedBy: and...@metalanguage.com


--- Comment #0 from Andrei Alexandrescu  2010-09-09 
08:09:51 PDT ---
Consider:

import std.stdio;

struct A
{
version (none)
{
int x;
}
else
{
int y;
}
int z;
}

void main()
{
foreach (s; __traits(allMembers, A))
writeln(s);
}

Surprisingly, this prints

x
z

although version "none" is not defined.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 4719] Clean up associative array runtime interface to enable precise GC

2010-09-09 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=4719


nfx...@gmail.com changed:

   What|Removed |Added

   Keywords||patch


--- Comment #1 from nfx...@gmail.com 2010-09-09 06:55:48 PDT ---
Posted a patch for this in issue 3463.
Adding patch keyword.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 3463] Integrate Precise Heap Scanning Into the GC

2010-09-09 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3463


nfx...@gmail.com changed:

   What|Removed |Added

 Attachment #488 is|0   |1
   obsolete||


--- Comment #76 from nfx...@gmail.com 2010-09-09 06:45:13 PDT ---
(From update of attachment 488)
marking dsimcha's patches as obsolete because there are way too many
attachments already, and it seems it's not going to be used (even less than my
patches anyway)

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 3463] Integrate Precise Heap Scanning Into the GC

2010-09-09 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3463



--- Comment #75 from nfx...@gmail.com 2010-09-09 06:43:43 PDT ---
Created an attachment (id=754)
tango: enable precise scanning for AAs

This is the Tango patch that goes with the dmd patch (attachment 753). The AA
implementation is duplicated because the Tango patch is as well compatible with
an unpatched dmd. An unpatched dmd will compile the "old" AA implementation
instead of the new one.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 3463] Integrate Precise Heap Scanning Into the GC

2010-09-09 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3463



--- Comment #74 from nfx...@gmail.com 2010-09-09 06:41:46 PDT ---
Created an attachment (id=753)
dmd: enable precise scanning for AAs

AAs are special because they use some runtime mechanism. dmd didn't allow
precise scanning because not all type information was available (usually only
the key).

This patch completely changes the runtime interface for AAs in order to allow
precise scanning. It also does much much more. (For example I didn't like that
dmd's runtime interface was so incredibly whacky, such as passing values of
arbitrary runtime type per vararg, and expecting the value next to the argument
before on the stack. Walter probably has to change this anyway for the dmd 64
bit port...)

The patched dmd is backwards compatible and compiles Tango svn just fine. The
patched Tango tells dmd to use the new ABI by declaring a magical member
variable somewhere in object.di.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 3463] Integrate Precise Heap Scanning Into the GC

2010-09-09 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3463


nfx...@gmail.com changed:

   What|Removed |Added

 Attachment #739 is|0   |1
   obsolete||


--- Comment #72 from nfx...@gmail.com 2010-09-09 06:36:26 PDT ---
Created an attachment (id=751)
D1 - patch for dmd for creating pointer bitmasks

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 3463] Integrate Precise Heap Scanning Into the GC

2010-09-09 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3463


nfx...@gmail.com changed:

   What|Removed |Added

 Attachment #737 is|0   |1
   obsolete||


--- Comment #73 from nfx...@gmail.com 2010-09-09 06:37:13 PDT ---
Created an attachment (id=752)
D1 - patch for Tango's runtime to enable precise GC scanning

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 4843] New: Inconsistency in overloading ref vs. non-ref

2010-09-09 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=4843

   Summary: Inconsistency in overloading ref vs. non-ref
   Product: D
   Version: D2
  Platform: Other
OS/Version: Windows
Status: NEW
  Keywords: rejects-valid
  Severity: normal
  Priority: P2
 Component: DMD
AssignedTo: nob...@puremagic.com
ReportedBy: dsim...@yahoo.com


--- Comment #0 from David Simcha  2010-09-09 06:03:33 PDT ---
The following code compiles and correctly resolves the lvalue vs. non-lvalue
overloading:

import std.stdio;

void doStuff(const ref int i) {
writeln("Doing stuff by ref.");
}

void doStuff(const int i) {
writeln("Forwarding to ref overload.");
doStuff(i);
}

void main() {
doStuff(1);
} 

Similar code also works for classes and arrays.  It seems to be broken for
structs, though.  The following code is rejected:

import std.stdio;

struct S {}

bool fun(const ref S rhs) {
return true;
}

bool fun(const S rhs) {
return fun(rhs);
}

test9.d(12): Error: function test9.fun called with argument types:
((const(S)))
matches both:
test9.fun(ref const const(S) rhs)
and:
test9.fun(const const(S) rhs)

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---