[Issue 7456] Purity strength not documented

2014-01-11 Thread d-bugmail
https://d.puremagic.com/issues/show_bug.cgi?id=7456


Peter Alexander  changed:

   What|Removed |Added

 CC||peter.alexander...@gmail.co
   ||m


--- Comment #2 from Peter Alexander  2014-01-11 
16:16:52 PST ---
(In reply to comment #1)
> There is some debate as to whether they even should be. pure is defined quite
> correctly in the spec. weak vs strong purity is arguably just an 
> implementation
> detail used for optimizations. I believe that this is Don's take on it (he's
> both the one who came up with strong vs weak purity and the one who updated 
> the
> spec when pure was changed).
> 
> Now, weak vs strong purity inevitably comes up when people get confused by why
> the compiler allows what are weakly pure functions to be pure (particularly
> when compared with what TDPL says - though I think that many just look at it
> from a functional perspective and are confused even without having read TDPL).
> So, there is arguably merit in defining them somewhere. But I believe that
> Don's against it. He's mentioned before that he wants the terms to go away
> entirely.

Implicit conversion to immutable is only allowed with strongly pure functions,
so purity strength has semantic differences, not just implementation
differences. These must be documented.

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


[Issue 11906] New: Compiler assertion when comparing function pointers

2014-01-11 Thread d-bugmail
https://d.puremagic.com/issues/show_bug.cgi?id=11906

   Summary: Compiler assertion when comparing function pointers
   Product: D
   Version: D2
  Platform: x86
OS/Version: Windows
Status: NEW
  Severity: normal
  Priority: P2
 Component: DMD
AssignedTo: nob...@puremagic.com
ReportedBy: cameron_s...@hotmail.com


--- Comment #0 from Cameron Shea  2014-01-11 15:30:04 
PST ---
module main;
import std.c.windows.windows;

void main()
{
extern(Windows) HMODULE function(LPCSTR) f;
assert(f != &GetModuleHandleA);
}

> dmd -g -debug -c main.d -ofobj\Debug\main.obj
Assertion failure: '0' on line 1562 in file 'cast.c'

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


[Issue 11906] Compiler assertion when comparing function pointers

2014-01-11 Thread d-bugmail
https://d.puremagic.com/issues/show_bug.cgi?id=11906



--- Comment #1 from Cameron Shea  2014-01-11 15:33:03 
PST ---
DMD32 D Compiler v2.064

-- 
Configure issuemail: https://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

2014-01-11 Thread d-bugmail
https://d.puremagic.com/issues/show_bug.cgi?id=1001



--- Comment #74 from Jonathan M Davis  2014-01-11 15:16:45 
PST ---
> It's a bigger topic amd opinions vary. AFAIK Errors skip cleanup code, but 
> it's possible to catch Errors to perform minimal cleanup.

According to Walter, there is no guarantee that any cleanup code is run when an
Error is thrown (though I'm not sure what the spec says on the matter).
However, some of the folks that believe that cleanup should be done on Errors
made it so that most cleanup code _is_ run when an Error is thrown. So, unless
something is changed, I believe that normally finally blocks, scope(exit),
scope(failure), and destructors will all be run when an Error is thrown. Where
they will get skipped is when an Error is thrown from a nothrow function, and
the cleanup code is outside the nothrow function, because the caller of the
nothrow function will assume that the nothrow function doesn't throw anything
and optimize based on that.

So, at this point, whether cleanup code is run on an Error depends on the code,
and at minimum, it will never be the case that cleanup code is always run on an
Error, because it won't be done for nothrow functions, or we lose the ability
to optimize it based on the fact that it won't throw an exception (which is one
its benefits). However, whether it will ever be changed such that cleanup code
is never run for Errors is an open question and a topic of hot debate.

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


[Issue 11905] Can't make enum of custom struct types autoincrement working

2014-01-11 Thread d-bugmail
https://d.puremagic.com/issues/show_bug.cgi?id=11905



--- Comment #1 from Daniel Čejchan  2014-01-11 14:57:42 PST 
---
CyberShadow has made a patch that should fix this:
http://dump.thecybershadow.net/88e4ac8353cebe100f9379da688829e0/opt-max-check.patch

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


[Issue 11857] `out` parameter breaks overload resolution

2014-01-11 Thread d-bugmail
https://d.puremagic.com/issues/show_bug.cgi?id=11857



--- Comment #3 from Denis Shelomovskij  2014-01-12 
01:53:22 MSK ---
So do I understand correctly ICE part of the issue is considered a duplicate of
issue 11822 and "This code should compile" part is considered WONTFIX? If so,
where is the documentation claiming such code incorrect?

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


[Issue 11822] `-de` switch causees ICE with `auto` return and other stuff

2014-01-11 Thread d-bugmail
https://d.puremagic.com/issues/show_bug.cgi?id=11822


Walter Bright  changed:

   What|Removed |Added

 CC||bugzi...@digitalmars.com


--- Comment #3 from Walter Bright  2014-01-11 
13:22:50 PST ---
https://github.com/D-Programming-Language/dmd/pull/3081

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


[Issue 11905] New: Can't make enum of custom struct types autoincrement working

2014-01-11 Thread d-bugmail
https://d.puremagic.com/issues/show_bug.cgi?id=11905

   Summary: Can't make enum of custom struct types autoincrement
working
   Product: D
   Version: unspecified
  Platform: All
OS/Version: All
Status: NEW
  Severity: normal
  Priority: P2
 Component: DMD
AssignedTo: nob...@puremagic.com
ReportedBy: czda...@gmail.com


--- Comment #0 from Daniel Čejchan  2014-01-11 12:28:35 PST 
---
http://pastebin.com/cnKy8LGK

Such thing causes "Error: no property 'max' for type 'enumf!ushort'" error (no
error line or anything).
I have tried implementing my own max using enum, static immutable variable,
@property function and static @property function, either one does not work
(throws "Error: no property 'max' for type 'enumf!ushort', did you mean
'max'?").

-- 
Configure issuemail: https://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

2014-01-11 Thread d-bugmail
https://d.puremagic.com/issues/show_bug.cgi?id=1001



--- Comment #73 from Martin Nowak  2014-01-11 10:53:13 PST ---
(In reply to comment #72)
> (In reply to comment #71)
> OK... so the problem is basically that we call destructors / finally blocks /
> scope(exit) blocks when Errors are thrown, and those may behave in a bad way
> since the program was in an indeterminate state? I imagine that it's the same
> for signals on POSIX? In that case, I suppose we could handle both in the same
> way: immediately print a stack trace and exit, but still provide a mechanism
> for the user to customize handling of such conditions.
> 
> I recall a discussion regarding whether thrown Errors should call finalizers 
> on
> the stack, but I suppose it's not really clear-cut.

It's a bigger topic amd opinions vary. AFAIK Errors skip cleanup code, but it's
possible to catch Errors to perform minimal cleanup.

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


[Issue 11904] Error: this cannot be interpreted at compile-time (core/time.di)

2014-01-11 Thread d-bugmail
https://d.puremagic.com/issues/show_bug.cgi?id=11904



--- Comment #1 from Marco Leise  2014-01-11 09:45:34 PST ---
The latest versions of GDC no longer install interface files. This error
occurred for the 2.063.2 version.

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


[Issue 11904] New: Error: this cannot be interpreted at compile-time (core/time.di)

2014-01-11 Thread d-bugmail
https://d.puremagic.com/issues/show_bug.cgi?id=11904

   Summary: Error: this cannot be interpreted at compile-time
(core/time.di)
   Product: D
   Version: D2
  Platform: All
OS/Version: All
Status: NEW
  Keywords: CTFE
  Severity: major
  Priority: P2
 Component: DMD
AssignedTo: nob...@puremagic.com
ReportedBy: marco.le...@gmx.de


--- Comment #0 from Marco Leise  2014-01-11 09:23:06 PST ---
I tried to compile dub with dub itself like so: dub build --compiler=gdc
and got this error message:

/usr/include/d/4.8.1/x86_64-pc-linux-gnu/core/time.di:224: Error: this cannot
be interpreted at compile time, because it has no available source code
/usr/include/d/4.8.1/std/net/curl.d:195:called from here: dur(2L)

It looks like there is no clear way for the D compiler even in Phobos and
druntime to figure out what source needs to stay in the .di file.
Is that a systematic failure? I ask that because up to 100% of any library code
could be run at compile time and CTFE only works when the source is available.
In effect that means that subtle changes like changing a global variable from
mutable to immutable or enum only work if Phobos is installed with full source
files, which at least GDC seems to try and avoid (probably in order to speed up
compilation due to the high interdependencies in Phobos modules).

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


[Issue 11138] "real" appender missing

2014-01-11 Thread d-bugmail
https://d.puremagic.com/issues/show_bug.cgi?id=11138


Vladimir Panteleev  changed:

   What|Removed |Added

 CC||thecybersha...@gmail.com


--- Comment #7 from Vladimir Panteleev  2014-01-11 
16:47:22 EET ---
For the record, IIRC from my appender performance experiments I found that
extra indirection (required for a copyable ref-counted appender) has a big
impact on performance. Most uses of an appender do not involve passing it
around by value.

Andrej linked to this bug from
https://github.com/D-Programming-Language/phobos/pull/502, more discussion
there and at Issue 5813.

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


[Issue 11903] New: Internal error: backend/cgcs.c 351

2014-01-11 Thread d-bugmail
https://d.puremagic.com/issues/show_bug.cgi?id=11903

   Summary: Internal error: backend/cgcs.c 351
   Product: D
   Version: D2
  Platform: All
OS/Version: All
Status: NEW
  Severity: normal
  Priority: P2
 Component: DMD
AssignedTo: nob...@puremagic.com
ReportedBy: dran...@gmail.com


--- Comment #0 from Nicolas Sicard  2014-01-11 04:50:13 PST 
---
struct Foo
{
immutable(int)[] list;
}

unittest
{
enum foo = Foo([1, 2, 3]);
foo.list ~= 4;
}

ICE with DMD64 D Compiler v2.065-devel-2318831:
Internal error: backend/cgcs.c 351

May be related to https://d.puremagic.com/issues/show_bug.cgi?id=11596

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


[Issue 11880] Reserve the keyword "yield"

2014-01-11 Thread d-bugmail
https://d.puremagic.com/issues/show_bug.cgi?id=11880



--- Comment #5 from Vladimir Panteleev  2014-01-11 
14:39:01 EET ---
(In reply to comment #4)
> Do you have an example usage syntax (and implementation)?

You posted this 5 years ago:
http://forum.dlang.org/post/g7uhp6$317g$1...@digitalmars.com

There are other, similar implementations.

> And is it going in Phobos?

I don't know of any plans for that.

> What about Issue 5660 ?

The same arguments apply there too. I see people posted their own coroutine
implementations there as well.

> This is the syntax I suggested, I think it's readable. What's the more 
> readable
> usage syntax that you suggest?

My argument is that the cost of introducing a breaking change in the language
is not justified for the sake of syntax sugar.

-- 
Configure issuemail: https://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

2014-01-11 Thread d-bugmail
https://d.puremagic.com/issues/show_bug.cgi?id=1001



--- Comment #72 from Vladimir Panteleev  2014-01-11 
14:06:23 EET ---
(In reply to comment #71)
> It's simply that the compiler cannot handle cleanup when every instruction
> could throw. In case an asynchronous exception happens in the middle of some
> statement your program is immediately in an invalid state. Continuing could
> deadlock or corrupt data, much worse than a crash.

OK... so the problem is basically that we call destructors / finally blocks /
scope(exit) blocks when Errors are thrown, and those may behave in a bad way
since the program was in an indeterminate state? I imagine that it's the same
for signals on POSIX? In that case, I suppose we could handle both in the same
way: immediately print a stack trace and exit, but still provide a mechanism
for the user to customize handling of such conditions.

I recall a discussion regarding whether thrown Errors should call finalizers on
the stack, but I suppose it's not really clear-cut.

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


[Issue 11902] DMD debuginfo doesn't seem to write classes correctly

2014-01-11 Thread d-bugmail
https://d.puremagic.com/issues/show_bug.cgi?id=11902



--- Comment #4 from Rainer Schuetze  2014-01-11 01:55:01 
PST ---
(In reply to comment #2)
> Well I think he needs to come up with something if not that, because it can't
> go on not being able to inspect classes.
> Do you know any workarounds?

One point in Walter's favor is that VS2012 contains two debug engines, one that
works with '.', but fails to display other things locals in watches. The other
is the "old" engine that needs the patch (enabled by "native edit and
continue"). So it seems like the bug is in the VS engine, not dmd, but that
doesn't help in making it work.

I don't know other workarounds. IIRC ':' doesn't work. cv2pdb has option -s to
configure the '.' replacement character, so you can try some alternatives using
a win32 build.

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


[Issue 11900] Implicit cast of string literal -> char* causing ambiguous call

2014-01-11 Thread d-bugmail
https://d.puremagic.com/issues/show_bug.cgi?id=11900



--- Comment #5 from Jakob Ovrum  2014-01-11 01:34:43 PST 
---
(In reply to comment #4)
> (In reply to comment #3)
> > (In reply to comment #2)
> > > Well it's kinda like you say, this overload set is very common, if you 
> > > have a C
> > > function, and you want to produce a D wrapper which receives a string and 
> > > calls
> > > through using toStringz.
> > 
> > The ambiguity with string literal arguments probably means it's not overly
> > common at this stage, but regardless, its popularity does not justify its 
> > use.
> > We have no obligation to make concessions to enable bad code.
> 
> How is it a concession? It seems to me like the concession was already made to
> make interacting with C functions easier. I'd say if anything, this is a bug
> that stems from that decision.

It complicates overloading rules.

> There's nowhere else in D where a dynamic array can implicitly convert to a
> pointer... why does it happen ONLY in the case of a string literal?

String literals are not dynamic arrays of a particular type. They are
polysemous: they can be UTF-8, UTF-16 or UTF-32 strings; to wit, there is no
place in the language where implicit conversion happens between dynamic arrays
of different code unit element types, either.

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


[Issue 11902] DMD debuginfo doesn't seem to write classes correctly

2014-01-11 Thread d-bugmail
https://d.puremagic.com/issues/show_bug.cgi?id=11902


Vladimir Panteleev  changed:

   What|Removed |Added

 CC||thecybersha...@gmail.com


--- Comment #3 from Vladimir Panteleev  2014-01-11 
11:29:36 EET ---
(In reply to comment #1)
> The problem is that the VS debugger is confused by '.' in type names. That is
> why cv2pdb translates these to '@'.

Sorry if this is a dumb question, but would : or :: (as for C++) work instead?
@ is an unusual character to delimit namespace path components...

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


[Issue 11900] Implicit cast of string literal -> char* causing ambiguous call

2014-01-11 Thread d-bugmail
https://d.puremagic.com/issues/show_bug.cgi?id=11900



--- Comment #4 from Manu  2014-01-11 01:21:24 PST ---
(In reply to comment #3)
> (In reply to comment #2)
> > Well it's kinda like you say, this overload set is very common, if you have 
> > a C
> > function, and you want to produce a D wrapper which receives a string and 
> > calls
> > through using toStringz.
> 
> The ambiguity with string literal arguments probably means it's not overly
> common at this stage, but regardless, its popularity does not justify its use.
> We have no obligation to make concessions to enable bad code.

How is it a concession? It seems to me like the concession was already made to
make interacting with C functions easier. I'd say if anything, this is a bug
that stems from that decision.
There's nowhere else in D where a dynamic array can implicitly convert to a
pointer... why does it happen ONLY in the case of a string literal?

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


[Issue 11902] DMD debuginfo doesn't seem to write classes correctly

2014-01-11 Thread d-bugmail
https://d.puremagic.com/issues/show_bug.cgi?id=11902



--- Comment #2 from Manu  2014-01-11 01:22:48 PST ---
Well I think he needs to come up with something if not that, because it can't
go on not being able to inspect classes.
Do you know any workarounds?

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


[Issue 11901] real win64

2014-01-11 Thread d-bugmail
https://d.puremagic.com/issues/show_bug.cgi?id=11901


Rainer Schuetze  changed:

   What|Removed |Added

 CC||r.sagita...@gmx.de


--- Comment #1 from Rainer Schuetze  2014-01-11 00:48:22 
PST ---
I guess this will be fixed by the changes to formatValue included in
https://github.com/D-Programming-Language/phobos/pull/1411

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


[Issue 11898] void[] buffers while debugging

2014-01-11 Thread d-bugmail
https://d.puremagic.com/issues/show_bug.cgi?id=11898



--- Comment #1 from Rainer Schuetze  2014-01-11 00:41:18 
PST ---
*** Issue 11899 has been marked as a duplicate of this issue. ***

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


[Issue 11899] void[] buffers while debugging

2014-01-11 Thread d-bugmail
https://d.puremagic.com/issues/show_bug.cgi?id=11899


Rainer Schuetze  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||r.sagita...@gmx.de
 Resolution||DUPLICATE


--- Comment #1 from Rainer Schuetze  2014-01-11 00:41:18 
PST ---
*** This issue has been marked as a duplicate of issue 11898 ***

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


[Issue 11898] void[] buffers while debugging

2014-01-11 Thread d-bugmail
https://d.puremagic.com/issues/show_bug.cgi?id=11898


Rainer Schuetze  changed:

   What|Removed |Added

   Keywords||symdeb
 CC||r.sagita...@gmx.de
  Component|DMD |VisualD


--- Comment #2 from Rainer Schuetze  2014-01-11 00:44:29 
PST ---
I guess this is more a debugger problem that could be solved by the visualizer
macros added by cv2pdb.

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


[Issue 11902] DMD debuginfo doesn't seem to write classes correctly

2014-01-11 Thread d-bugmail
https://d.puremagic.com/issues/show_bug.cgi?id=11902


Rainer Schuetze  changed:

   What|Removed |Added

 CC||r.sagita...@gmx.de


--- Comment #1 from Rainer Schuetze  2014-01-11 00:39:45 
PST ---
The problem is that the VS debugger is confused by '.' in type names. That is
why cv2pdb translates these to '@'.

So far, Walter rejected the proposal to also do this translation in the Win64
debug output.

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


[Issue 11902] New: DMD debuginfo doesn't seem to write classes correctly

2014-01-11 Thread d-bugmail
https://d.puremagic.com/issues/show_bug.cgi?id=11902

   Summary: DMD debuginfo doesn't seem to write classes correctly
   Product: D
   Version: D2
  Platform: x86_64
OS/Version: Windows
Status: NEW
  Severity: major
  Priority: P2
 Component: DMD
AssignedTo: nob...@puremagic.com
ReportedBy: turkey...@gmail.com


--- Comment #0 from Manu  2014-01-11 00:22:08 PST ---
DMD-Win64:

While debugging in Visual Studio, inspecting classes doesn't seem to work
properly.

Hovering over a class instance:
  It shows the class pointer correctly.
  Clicking '+' to reveal the members shows a list with the correct number of
members...
  But each member shows "?" as the member name, and doesn't show any value to
the right, and a little red "No Entry" symbol if you hover over it.

Pasting into the watch window just shows a blank line for each member.

Bonus: The implicit typeinfo and vtable pointers should be present in the class
too

Tested with VS2010.

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