[Issue 15056] [REG2.068.1] Unstored RAII struct return yields bogus error: "cannot mix core.std.stdlib.alloca() and exception handling"

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

--- Comment #9 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/6c7069c06b8a5b3f003955ce2d908b6c928823a2
add test for Issue 15056

- Unstored RAII struct return yields bogus error

https://github.com/D-Programming-Language/dmd/commit/ef854c328bf8798f3154dc923d1b7115acd97c70
Merge pull request #5110 from MartinNowak/workaround15056

add test for Issue 15056 - Unstored RAII struct return yields bogus error

--


[Issue 14708] destructor for temporary not called during stack unwinding

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

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

https://github.com/D-Programming-Language/dmd/commit/1a807d16b5d8ba87dbfd4344942a6708ef516896
Revert "fix Issue 14708 - destructor for temporary not called during stack
unwinding"

This reverts commit e20c63cb28decb66c792b1dfc10d79aa0aebd7cf.

# Conflicts:
#test/runnable/sdtor.d

--


[Issue 15100] @nogc should ignore allocations on assertion fail

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

--- Comment #3 from Steven Schveighoffer  ---
Jonathan, I think you misunderstand.

This compiles today, and uses the gc (using a user-supplied variable to prevent
folding into assert(0)):

void main(string[] args) @nogc
{
   assert(args.length > 100, "hi");
}

But this doesn't:

assert(args.length > 100, "hi".idup);

Note that the exception isn't constructed (or allocated), and the "hi".idup
isn't run unless something fails. This code is truly @nogc unless something
goes horribly wrong, in which case the program will exit anyway, who cares if
the gc is used?

Note, I'm not advocating that the expression 'new Error("msg")' be considered
@nogc. My point in saying that is this is effectively what an assert does, and
it's considered @nogc. All I'm saying is that asserts should be treated fully
as @nogc, not just the error construction part.

--


[Issue 14708] destructor for temporary not called during stack unwinding

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

Kenji Hara  changed:

   What|Removed |Added

 Status|RESOLVED|REOPENED
 Resolution|FIXED   |---

--- Comment #6 from Kenji Hara  ---
It was once fixed in 2.068.0, but the compiler change was reverted because of
issue 15056. Therefore, the issue will be reopened since 2.068.2.

--


[Issue 15102] New: Unified function to remove files/directories

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

  Issue ID: 15102
   Summary: Unified function to remove files/directories
   Product: D
   Version: D2
  Hardware: All
OS: All
Status: NEW
  Severity: enhancement
  Priority: P1
 Component: phobos
  Assignee: nob...@puremagic.com
  Reporter: d...@me.com

Currently there are at least three different function to remove files and
directories in Phobos. It would be nice to have a single one that handles all
cases. For when one just want to remove something, regardless if it's a file or
a directory and if it's empty or not.

--


[Issue 15103] New: Improve declaration / initialization syntax error message

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

  Issue ID: 15103
   Summary: Improve declaration / initialization syntax error
message
   Product: D
   Version: D2
  Hardware: All
OS: All
Status: NEW
  Severity: enhancement
  Priority: P1
 Component: dmd
  Assignee: nob...@puremagic.com
  Reporter: l...@luismarques.eu

--

struct Foo
{
this(int x) {}
}

void main()
{
Foo foo(42);
}

(8): Error: found 'foo' when expecting ';' following statement

--

The problem is not that 'foo' was found, since `Foo foo` is fine, as is `Foo
foo = Foo(42)`.

--


[Issue 15103] Improve declaration / initialization syntax error message

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

Steven Schveighoffer  changed:

   What|Removed |Added

   Keywords||diagnostic
   Severity|enhancement |minor

--


[Issue 6400] opDispatch with WithStatement

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

Luís Marques  changed:

   What|Removed |Added

 CC||l...@luismarques.eu

--- Comment #4 from Luís Marques  ---
I've also ran into this issue...

--


[Issue 15003] assumeSorted Allocates GC Memory in Debug Mode

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

github-bugzi...@puremagic.com changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED

--


[Issue 15003] assumeSorted Allocates GC Memory in Debug Mode

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

--- Comment #2 from github-bugzi...@puremagic.com ---
Commit pushed to master at https://github.com/D-Programming-Language/phobos

https://github.com/D-Programming-Language/phobos/commit/3fb4a9eaeaa68126341bf82082926ee4e96c1871
fix issue 15003

--


[Issue 10932] Useless temporaries and other absurd in inlined code

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

Walter Bright  changed:

   What|Removed |Added

 CC||bugzi...@digitalmars.com

--- Comment #2 from Walter Bright  ---
The PUSH EAX is there to align the stack to 16 bytes.

--


[Issue 15100] @nogc should ignore allocations on assertion fail

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

Jonathan M Davis  changed:

   What|Removed |Added

 CC||issues.dl...@jmdavisprog.co
   ||m

--- Comment #2 from Jonathan M Davis  ---
Whether it even makes sense for new Error to be @nogc depends on whether the GC
is available or not. If it is, then the Error will presumably kill the program,
so the allocation isn't a problem. However, if the GC isn't available, and the
programmer is relying on @nogc to guarantee that the GC isn't actually used,
then there's definitely a problem.

But maybe that can all be cleaned up with the reference counted Object
hierarchy  that's been talked about previously, since Exceptions and Errors
would presumably be part of that - though unless they're malloced, they'd still
be using the GC, and presumably, using new wouldn't use malloc, so if we wanted
a ref-counted Throwable to be on the malloced heap, something other than new
would have to be used.

idup will always use the GC regardless though. I don't see how it could be
otherwise. So, even if it were fixed so that Error was ref-counted and
malloced, idup still wouldn't work without the GC. We really need some other
way to handle the strings for the exception messages if we want to avoid the
GC.

This whole situation is a bit sticky though, because we're basically trying to
ban the GC in @nogc code while still using for stuff related to exceptions, and
that's obviously problematic.

Maybe if allocating for an assertion fails, it should result in a message being
printed (if possible) and then a HLT instruction? Even if Errors in general
have a problem, stuff like assertions are controlled by druntime where we can
have some control over what's going on without requiring a full-blown solution
for dealing with the @nogc problem with exceptions. If we absolutely had to, we
could use a function pointer to a @nogc function and using casting to make it
point to one that isn't actually @nogc, though I really think that we should
find a more principled solution to this that doesn't require lying about being
@nogc.

Regardless of the exact solution here, I suspect that if we want to fully sort
out the various issues with @nogc and exceptions (be they Errors or
Exceptions), we need to sort out the ref-counting Object hierarchy stuff and
whatever that's supposed to do and look like.

--


[Issue 14840] [2.068.0-b2] failure to inline functions with loops

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

Walter Bright  changed:

   What|Removed |Added

   Hardware|x86_64  |All
Summary|[2.068.0-b2] failure to |[2.068.0-b2] failure to
   |inline _trivial_ function   |inline functions with loops
 OS|Windows |All

--


[Issue 14708] destructor for temporary not called during stack unwinding

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

Martin Nowak  changed:

   What|Removed |Added

 CC||c...@dawg.eu

--- Comment #4 from Martin Nowak  ---
FWIW dmd currently emits SEH wrappers around any temporary destruction.
Weird that nobody yet noticed that. Doesn't this severely impact performance on
Win32?

--


[Issue 15101] New: [Home]

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

  Issue ID: 15101
   Summary: [Home]
   Product: D
   Version: D2
  Hardware: All
   URL: http://dlang.org/
OS: All
Status: NEW
  Severity: enhancement
  Priority: P3
 Component: dlang.org
  Assignee: nob...@puremagic.com
  Reporter: br...@infinityplusb.com

Created attachment 1551
  --> https://issues.dlang.org/attachment.cgi?id=1551=edit
Screenshot of error occurring

The code example on the home page produces an error when run.
I have attached a screenshot of the output.
It was the code example regarding curl and some weather output. :)

The Browser I have used is Firefox 40.0.3
I'm running Ubuntu 15.04 kernel 4.2.0-040200-generic

Not sure what else you need, let me know and happy to test.

--


[Issue 14981] Missing nothrow attribute in dbgVerifySorted()

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

j...@red.email.ne.jp changed:

   What|Removed |Added

 CC||nicolas.jincher...@gmail.co
   ||m

--- Comment #1 from j...@red.email.ne.jp ---
*** Issue 15091 has been marked as a duplicate of this issue. ***

--


[Issue 15091] Error passing lambda to std.algorithm.sorting.sort

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

j...@red.email.ne.jp changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||j...@red.email.ne.jp
 Resolution|--- |DUPLICATE
 OS|Mac OS X|All

--- Comment #1 from j...@red.email.ne.jp ---


*** This issue has been marked as a duplicate of issue 14981 ***

--


[Issue 15104] Switching fibers in finally blocks breaks EH

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

David Nadlinger  changed:

   What|Removed |Added

   Severity|enhancement |major

--


[Issue 15104] New: Switching fibers in finally blocks breaks EH

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

  Issue ID: 15104
   Summary: Switching fibers in finally blocks breaks EH
   Product: D
   Version: D2
  Hardware: x86
OS: All
Status: NEW
  Severity: enhancement
  Priority: P1
 Component: druntime
  Assignee: nob...@puremagic.com
  Reporter: c...@klickverbot.at

Consider the following test case:

---
import core.thread : Fiber;

void throwAndYield(string msg) {
  try {
throw new Exception(msg);
  } finally {
Fiber.yield();
  }
}

void fiber(string name) {
  try {
try {
  throwAndYield(name ~ ".1");
} finally {
  throwAndYield(name ~ ".2");
}
  } catch (Exception e) {
assert(e.msg == name ~ ".1");
assert(e.next);
assert(e.next.msg == name ~ ".2");
assert(!e.next.next);
  }
}

void main() {
  auto first = new Fiber(() => fiber("first"));
  auto second = new Fiber(() => fiber("second"));
  first.call();
  second.call();
  first.call();
  second.call();
  first.call();
  second.call();
}
---


Because the current implementation keeps information about the inflight
exceptions in a TLS variable, switching contexts while an exception is in
flight (i.e., from a finally block or dtor) completely breaks EH. More
specifically, exceptions might disappear from one thread and might be appended
to the exception chain of another thread.

The solution is to save/restore the per-stack EH metadata on fiber context
switches. I am not going to fix this for DMD's druntime, but will link the LDC
patch for reference here once it's done.

--