[Issue 8549] Bad error message with const methods

2012-10-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=8549



--- Comment #3 from Andrej Mitrovic  2012-10-19 
21:40:56 PDT ---
(In reply to comment #2)
> (In reply to comment #1)
> > Issue6707 covers this, the error message is now:
> 
> I agree with closing this as dupe.
> 
> But I think adding "const" at the end is not nearly enough to make the error
> message clear.

I would take a bigger pull to fix this since there's a lot of code duplication
in DMD. Personally I would change the message to:

Error: function test.Foo.opSlice () is not callable using const(this)

What do you think?

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


[Issue 8549] Bad error message with const methods

2012-10-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=8549



--- Comment #4 from Andrej Mitrovic  2012-10-19 
21:41:21 PDT ---
(In reply to comment #3)
> I would take

*It* would take.

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


[Issue 8549] Bad error message with const methods

2012-10-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=8549



--- Comment #2 from bearophile_h...@eml.cc 2012-10-19 21:36:07 PDT ---
(In reply to comment #1)
> Issue6707 covers this, the error message is now:

I agree with closing this as dupe.

But I think adding "const" at the end is not nearly enough to make the error
message clear.

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


[Issue 6707] Error message for mismatch of const/non-const property functions needs to improve

2012-10-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=6707


Andrej Mitrovic  changed:

   What|Removed |Added

 CC||bearophile_h...@eml.cc


--- Comment #3 from Andrej Mitrovic  2012-10-19 
20:57:42 PDT ---
*** Issue 8549 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: ---


[Issue 8549] Bad error message with const methods

2012-10-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=8549


Andrej Mitrovic  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||andrej.mitrov...@gmail.com
 Resolution||DUPLICATE


--- Comment #1 from Andrej Mitrovic  2012-10-19 
20:57:41 PDT ---
Issue6707 covers this, the error message is now:

test.d(11): Error: function test.Foo.opSlice () is not callable using argument
types () const

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

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


[Issue 8856] import inside function sometimes causes link errors

2012-10-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=8856



--- Comment #4 from Andrej Mitrovic  2012-10-19 
20:34:14 PDT ---
(In reply to comment #2)
> snip

The problem is DMD's -v option doesn't output dependencies when an import is
function local.

test.d:
module test;
import foo;
void main() { }

foo.d:
module foo;
import bar;

bar.d is empty

$ dmd -c -v test.d
> importfoo   (foo.d)
> importbar   (bar.d)

Now use a local import in foo.d:

foo.d:
module foo;
void loc() { import bar; }

$ dmd -c -v test.d
> importfoo   (foo.d)

DMD doesn't output the import to bar.d when using -v. That has to be fixed.

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


[Issue 8856] import inside function sometimes causes link errors

2012-10-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=8856



--- Comment #3 from thelastmamm...@gmail.com 2012-10-19 20:20:57 PDT ---
In the above post, DFLAGS is just the usual import path to dmdroot/phobos,
druntime/import and phobos library path.

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


[Issue 8856] import inside function sometimes causes link errors

2012-10-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=8856



--- Comment #2 from thelastmamm...@gmail.com 2012-10-19 20:18:49 PDT ---
(In reply to comment #1)
> We'll need a failing test-case. What contents cause the linker error?

here's a failure case which I simplified to the maximum.
Note that link error occurs with rdmd, not with dmd, as shown below. So that is
a problem with rdmd failing to find dependencies in some cases.


rdmd ${DFLAGS} main

=>Undefined symbols for architecture x86_64:
"_D9main_aux24fun1FZv", referenced from:
_D8main_aux4testFZv in main.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status


dmd ${DFLAGS} main main_aux main_aux2
=> works


Here are the files:

.
├── main.d
├── main_aux.d
└── main_aux2.d

cat  main.d

import main_aux;
void main(){
test;
}   
cat main_aux.d
module main_aux;
//putting the main function here removes link error
//void main(){
//test;
//}

//import main_aux2; //uncomment removes link error
void test(){
import main_aux2;
fun1();
}

cat main_aux2.d
module main_aux2;
void fun1() {
}

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


[Issue 8856] import inside function sometimes causes link errors

2012-10-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=8856


Andrej Mitrovic  changed:

   What|Removed |Added

 CC||andrej.mitrov...@gmail.com


--- Comment #1 from Andrej Mitrovic  2012-10-19 
18:44:09 PDT ---
We'll need a failing test-case. What contents cause the linker error?

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


[Issue 8856] New: import inside function sometimes causes link errors

2012-10-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=8856

   Summary: import inside function sometimes causes link errors
   Product: D
   Version: D2
  Platform: All
OS/Version: All
Status: NEW
  Severity: normal
  Priority: P2
 Component: DMD
AssignedTo: nob...@puremagic.com
ReportedBy: thelastmamm...@gmail.com


--- Comment #0 from thelastmamm...@gmail.com 2012-10-19 18:18:13 PDT ---
I sometimes get link errors eg:

void fun(){
import mypackage.mymodule;
mypackage.mymodule.myfun(); //might cause link error, depending on contents
of myfun
}

(cf http://forum.dlang.org/thread/xdonaxnahmonhyafh...@forum.dlang.org)

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


[Issue 4542] [tdpl] TDPL NVI example results in linker error

2012-10-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=4542



--- Comment #13 from Andrej Mitrovic  2012-10-19 
15:35:23 PDT ---
What should have been done from day #1 is to implement the 'virtual' keyword
and make methods non-virtual by default. It goes hand in hand with 'override'.
I really don't know why virtual is on by default, maybe someone thought
polymorphism would be used a lot in D but it turns out templates are much
cooler to work with these days rather than OOP, just look at Phobos for
example. (ok the last part is highly subjective :) )

(In reply to comment #12)
> at the cost of performance in pretty much all programs.

I wonder what would happen to performance if we suddenly switched behavior and
made methods non-virtual by default (and require a 'virtual' keyword).

Of course you'd have to fix your code and add 'virtual' to base methods, but
this is practically an error-free refactoring since 'override' was already
required. You would get CT errors rather than weird runtime behavior (like
C++03).

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


[Issue 8850] Nested struct creation by a template

2012-10-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=8850


timon.g...@gmx.ch changed:

   What|Removed |Added

 CC||timon.g...@gmx.ch


--- Comment #3 from timon.g...@gmx.ch 2012-10-19 15:30:32 PDT ---
I think it is supposed to work, the following does work:

T fun(T, alias f)(){
T s;
return s;
}

void main() {
int x=2;
void f(){}
struct R { int f() { return x; } }
auto m = fun!(R,f)();
}

(The reason why it works is that the alias function parameter forces local
template instantiation.)

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


[Issue 6894] ICE(cod1.c) with immutable and static

2012-10-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=6894



--- Comment #2 from bearophile_h...@eml.cc 2012-10-19 14:02:41 PDT ---
With dmd 2.061alpha it gives:

Internal error: backend\cod1.c 1718

- - - - - - - - -

Maybe related:


bool foo(int[3] data) {
return true;
}
struct Bar(T...) if (foo(T[0])) {}
void main() {
immutable int[3] array = [1, 2, 3];
Bar!array b;
}

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


[Issue 8850] Nested struct creation by a template

2012-10-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=8850


monarchdo...@gmail.com changed:

   What|Removed |Added

 CC||monarchdo...@gmail.com


--- Comment #2 from monarchdo...@gmail.com 2012-10-19 13:14:58 PDT ---
(In reply to comment #0)
> I'm not sure the intended behavior but currently is inconsistent. The 
> following
> code fails to compile with:
> 
> bad.d(2): Error: function D main is a nested function and cannot be accessed
> from bad.fun!(R).fun
> 
> T fun(T)() if(is(T == struct)) {
> T s;
> return s;
> }
> 
> void main() {
> struct R {
> void f() { }
> }
> 
> auto m = fun!R();
> }
> 
> However removing the function from the struct definition (include other values
> if desired) then it will compile. I'd think we'd want templates to have the
> ability to create a nested struct.

Nested structs keep a frame pointer (or something alike) to be able to access
anything inside main, from outside of main. As such, you can't use them (as is)
as a template parameter.

HOWEVER, you can declare your struct as "static" explicitly stating that the
struct does not keep any extra info, at which point it becomes useable:

T fun(T)() if(is(T == struct)) {
   T s;
   return s;
}

void main() {
   static struct R {
   void f() { }
   }

   auto m = fun!R();
}

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


[Issue 8855] New: cannot define a function name that matches a package name in import statements

2012-10-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=8855

   Summary: cannot define a function name that matches a package
name in import statements
   Product: D
   Version: D2
  Platform: All
OS/Version: All
Status: NEW
  Severity: normal
  Priority: P2
 Component: DMD
AssignedTo: nob...@puremagic.com
ReportedBy: thelastmamm...@gmail.com


--- Comment #0 from thelastmamm...@gmail.com 2012-10-19 11:47:54 PDT ---
When I define a function name (eg test() ) that matches a package name in
import statements (eg test.fun), I get a CT error: function main.test conflicts
with import main.test at main.d(1).
Not only is the CT error misleading, causing headaches in larger projects, but
also, is that an intended restriction? 


suppose the following files:
├── main.d
└── test
└── fun.d

cat main.d:
import test.fun;
void test(){} //CT error: function main.test conflicts with import main.test at
main.d(1)
void main(){}

cat test/fun.d:
module test.fun;

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


[Issue 8799] Give example of Tuple mapped to a function

2012-10-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=8799



--- Comment #1 from Jesse Phillips  2012-10-19 
11:28:57 PDT ---
Sorry I miss understood and did not remember that Tuples do auto expand. The
actual request is mapping the Tuple to a function, as requested on SO:

http://stackoverflow.com/questions/12888263/mapping-variadic-template-arguments-in-d

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


[Issue 8850] Nested struct creation by a template

2012-10-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=8850


Jesse Phillips  changed:

   What|Removed |Added

 CC||jesse.k.phillip...@gmail.co
   ||m


--- Comment #1 from Jesse Phillips  2012-10-19 
11:24:26 PDT ---
May be duplicating or related to:
http://d.puremagic.com/issues/show_bug.cgi?id=8542

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


[Issue 8854] New: incomprehensible bug on windows with import side effect

2012-10-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=8854

   Summary: incomprehensible bug on windows with import side
effect
   Product: D
   Version: D2
  Platform: All
OS/Version: Windows
Status: NEW
  Severity: normal
  Priority: P2
 Component: DMD
AssignedTo: nob...@puremagic.com
ReportedBy: thelastmamm...@gmail.com


--- Comment #0 from thelastmamm...@gmail.com 2012-10-19 11:24:45 PDT ---
Created an attachment (id=1150)
zip containing all 4 files to reproduce bug 

I've attached a set of 4 files I've simplified as much as I could. This gives
rise to a very weird bug (only on windows 32 bits). Here's the contents of the
readme:

steps to reproduce bug:

cd to directory containing this readme
rdmd --force -I.\tests main

note:
dmd -I.\tests main main_aux1 tests/main_testfun and then running main still has
the bug

note:
any of the following changes will remove the bug (ie the assert will pass):

rename tests/main_testfun to tests/main_aux2 (or probably other stuff) and
reflecting this in main_testfun.d and the import statement in main.d)
rename directory tests to test123 (or something else) and reflecting this in
the -I flag
remove the (useless) import main_aux1; in main_testfun.d
remove the (useless) import std.stdio in main_aux1.d
replace assert([0].map!(a=>b.length)[0]==1); by assert(b.length==1); in
main_testfun.d




├── main.d
├── main_aux1.d
├── readme.txt
└── tests
└── main_testfun.d


contents of each file:

cat main.d 

  
import main_testfun;
void main(){
testfun;
}


cat main_aux1.d

  
module main_aux1;
import std.stdio;//works wo this


cat tests/main_testfun.d   

  
module main_testfun;
import main_aux1;
import std.algorithm:map;

void testfun(){
auto b=[1];
assert([0].map!(a=>b.length)[0]==1);
}


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


[Issue 8542] crosstalk between template instantiations

2012-10-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=8542


Jesse Phillips  changed:

   What|Removed |Added

 CC||jesse.k.phillip...@gmail.co
   ||m


--- Comment #5 from Jesse Phillips  2012-10-19 
11:23:02 PDT ---
I may have duplicated this issue:

http://d.puremagic.com/issues/show_bug.cgi?id=8850

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


[Issue 8853] New: Unable to use std.concurrency.receive with Tuple!(immutable(int[]))

2012-10-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=8853

   Summary: Unable to use std.concurrency.receive with
Tuple!(immutable(int[]))
   Product: D
   Version: D2
  Platform: x86_64
OS/Version: Linux
Status: NEW
  Severity: normal
  Priority: P2
 Component: Phobos
AssignedTo: nob...@puremagic.com
ReportedBy: lomerei...@gmail.com


--- Comment #0 from Artem Tarasov  2012-10-19 11:01:09 
PDT ---
The following code compiles, but the program hangs (because the message is not
received by foo()). Without wrapping array into struct everything works. If
immutable(int[]) is changed to immutable(int)[] -- also works.

import std.concurrency;

struct A { 
immutable(int[]) a;  
}

void foo(Tid tid) {
receive(
   (A a) {
   send(tid, true); 
   }); 
}

void main() {
Tid tid = spawn(&foo, thisTid);
immutable(int[]) a = [1];
send(tid, A(a)); 
receiveOnly!bool();
}

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


[Issue 8836] function called with argument types ((void function())) matches both f(void function() fn) and f(void delegate() dg)

2012-10-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=8836


Kenji Hara  changed:

   What|Removed |Added

   Keywords||pull


--- Comment #2 from Kenji Hara  2012-10-19 08:22:49 PDT ---
https://github.com/D-Programming-Language/dmd/pull/1193

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


[Issue 8836] function called with argument types ((void function())) matches both f(void function() fn) and f(void delegate() dg)

2012-10-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=8836


Kenji Hara  changed:

   What|Removed |Added

   Keywords||rejects-valid


--- Comment #1 from Kenji Hara  2012-10-19 06:49:29 PDT ---
Reduced test case:

int f(void function () fn) { return 1; }
int f(void delegate () dg) { return 2; }

void foo() {}  // unsafe, impure, and may throw
void main()
{
f({ foo(); });
}

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


[Issue 8257] __traits(compiles) gives compile error

2012-10-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=8257


Don  changed:

   What|Removed |Added

 CC||clugd...@yahoo.com.au


--- Comment #1 from Don  2012-10-19 04:14:25 PDT ---
The error is not coming from __traits(compiles), it happens while generating
the obj file.
If you compile with dmd -c -o-
then no error occurs.

The error message itself should I think be regarded as an internal compiler
error.
Here's the root cause.

struct S { static void g() { } static int w;}
void main()
{
 S s;
 auto k = &s.g;
 pragma(msg, typeof(&s.g));
}
This compiles with -c -o-

According to the pragma, &s.g is a delegate. But, since g is a static function,
it cannot be a valid delegate. The error is detected only at the glue layer.

I believe that &s.g should be a function pointer, and s should be ignored,
since already:
int *x = &s.w; // accepted, s is ignored
s.g(); // accepted, s is ignored.

This would mean the __traits in the original code would continue to return
true, but the function f!"g"() would actually be valid and would return a
function pointer, not a delegate.

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


[Issue 8851] std.string.join should allow 'char' as joiner

2012-10-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=8851


monarchdo...@gmail.com changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
 AssignedTo|nob...@puremagic.com|monarchdo...@gmail.com


--- Comment #4 from monarchdo...@gmail.com 2012-10-19 02:45:07 PDT ---
(In reply to comment #3)
> (In reply to comment #1)
> > I expect that this stems from the stupidity of character literals 
> > defaulting to
> > char rather than dchar, and when you couple that with the fact that 
> > templates
> > always use the _exact_ type of what you give them, it's going to try and
> > instantiate join with a separator of char, which doesn't work with ranges of
> > dchar. I'm not sure how you'd go about fixing that.
> 
> I investigated, and that's not it.
> 
> It's *just* that std.array.join, like std.algorithm.joiner, expects the
> separator to be a range.
> 
> The enhancement request here would be for both "std.array.join"
> std.algorithm.joiner" to accept a single element as a separator.
> 
> In the meantime, of course, a simple workaround is to just "join([sep])".
> 
> I think this needlessly allocates a 1 element array though, no?
> 
> 
> On a side note, the current restrictions in join are overly restrictive,
> requiring an *exact* ElementType match, making this illegal:
> 
>int[] sep = [1];
>double[] z = [[0.1], [0.2]].join(sep);
> 
> The implementation actually perfectly supports it. As a matter of fact, joiner
> supports it. I'll see into relaxing the restraints for now, and taking the
> opportunity to investigate using an element as a separator.

That was fast actually. Both the fix and the enhancement are trivially trivial.
I believe in the change, so I'm assigning to self.

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


[Issue 8848] Array literals and AA literals are rejected as template value parameters

2012-10-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=8848



--- Comment #2 from Don  2012-10-19 02:40:26 PDT ---
(In reply to comment #1)
> (In reply to comment #0)
> > The template spec says that they are valid (both D1 and D2),
> 
> So are associative arrays accepted, but simple arrays aren't?
> 
> template Foo(int[] X) {}
> template Bar(int[5] X) {}
> void main() {}

No, the current DMD accepts neither arrays or AAs in declarations. But both can
be passed in template tuple parameters.

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


[Issue 8851] std.string.join should allow 'char' as joiner

2012-10-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=8851



--- Comment #3 from monarchdo...@gmail.com 2012-10-19 02:39:28 PDT ---
(In reply to comment #1)
> I expect that this stems from the stupidity of character literals defaulting 
> to
> char rather than dchar, and when you couple that with the fact that templates
> always use the _exact_ type of what you give them, it's going to try and
> instantiate join with a separator of char, which doesn't work with ranges of
> dchar. I'm not sure how you'd go about fixing that.

I investigated, and that's not it.

It's *just* that std.array.join, like std.algorithm.joiner, expects the
separator to be a range.

The enhancement request here would be for both "std.array.join"
std.algorithm.joiner" to accept a single element as a separator.

In the meantime, of course, a simple workaround is to just "join([sep])".

I think this needlessly allocates a 1 element array though, no?


On a side note, the current restrictions in join are overly restrictive,
requiring an *exact* ElementType match, making this illegal:

   int[] sep = [1];
   double[] z = [[0.1], [0.2]].join(sep);

The implementation actually perfectly supports it. As a matter of fact, joiner
supports it. I'll see into relaxing the restraints for now, and taking the
opportunity to investigate using an element as a separator.

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


[Issue 8851] std.string.join should allow 'char' as joiner

2012-10-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=8851


monarchdo...@gmail.com changed:

   What|Removed |Added

 CC||monarchdo...@gmail.com


--- Comment #2 from monarchdo...@gmail.com 2012-10-19 02:36:28 PDT ---
(In reply to comment #1)
> I expect that this stems from the stupidity of character literals defaulting 
> to
> char rather than dchar, and when you couple that with the fact that templates
> always use the _exact_ type of what you give them, it's going to try and
> instantiate join with a separator of char, which doesn't work with ranges of
> dchar. I'm not sure how you'd go about fixing that.

I investigated, and that's not it.

It's *just* that std.array.join, like std.algorithm.joiner, expects the
separator to be a range.

The enhancement request here would be for both "std.array.join"
std.algorithm.joiner" to accept a single element as a separator.

In the meantime, of course, a simple workaround is to just "join([sep])".

I think this needlessly allocates a 1 element array though, no?


On a side note, the current restrictions in join are overly restrictive,
requiring an exact match, making this illegal:

   int[] sep = [1];
   double[] z = [[0.1], [0.2]].join(sep);

When it is perfectly supported: joiner supports it.

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


[Issue 8774] 2.059 worked 2.060 does not: Unable to join thread

2012-10-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=8774



--- Comment #8 from luka8088  2012-10-19 00:33:58 PDT ---
Here is a simple test case:

-

module program;

import std.stdio;
import core.thread;

void main () {

  Thread t1, t2;

  t1 = new Thread(delegate { t2.start(); });
  t2 = new Thread(delegate { Thread.sleep(dur!"seconds"(1)); });

  t1.start();
  t2.join();

}

-

http://dpaste.dzfl.pl/0d24dd06

output:
  core.thread.ThreadException@src/core/thread.d(780): Unable to join thread

if t2.join occurs after t2 already finished then exception is not thrown, hence
the sleep

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


[Issue 8774] 2.059 worked 2.060 does not: Unable to join thread

2012-10-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=8774


luka8088  changed:

   What|Removed |Added

 CC||luka8...@owave.net


--- Comment #7 from luka8088  2012-10-19 00:32:12 PDT ---
*** Issue 8852 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: ---


[Issue 6116] May not join spawn()'ed threads

2012-10-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=6116


Alex R�nne Petersen  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 CC||a...@lycus.org
 Resolution||FIXED


--- Comment #5 from Alex R�nne Petersen  2012-10-19 09:31:01 
CEST ---
Closing this then. Please reopen if the bug resurfaces.

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


[Issue 8852] Unable to join thread (started by another thread)

2012-10-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=8852


luka8088  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||DUPLICATE


--- Comment #2 from luka8088  2012-10-19 00:32:12 PDT ---
(In reply to comment #1)
> Possibly related to #8774.

Yes, thank you for the note

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

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


[Issue 8852] New: Unable to join thread (started by another thread)

2012-10-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=8852

   Summary: Unable to join thread (started by another thread)
   Product: D
   Version: D2
  Platform: All
OS/Version: All
Status: NEW
  Severity: normal
  Priority: P2
 Component: Phobos
AssignedTo: nob...@puremagic.com
ReportedBy: luka8...@owave.net


--- Comment #0 from luka8088  2012-10-19 00:28:36 PDT ---
module program;

import std.stdio;
import core.thread;

void main () {

  Thread t1, t2;

  t1 = new Thread(delegate { t2.start(); });
  t2 = new Thread(delegate { Thread.sleep(dur!"seconds"(1)); });

  t1.start();
  t2.join();

}

-

http://dpaste.dzfl.pl/0d24dd06

output:
  core.thread.ThreadException@src/core/thread.d(780): Unable to join thread

if t2.join occurs after t2 already finished then exception is not thrown, hence
the sleep

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


[Issue 8852] Unable to join thread (started by another thread)

2012-10-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=8852


Alex R�nne Petersen  changed:

   What|Removed |Added

 CC||a...@lycus.org


--- Comment #1 from Alex R�nne Petersen  2012-10-19 09:29:58 
CEST ---
Possibly related to #8774.

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