www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 14893] New: std.concurrency: can't send shared arrays or

https://issues.dlang.org/show_bug.cgi?id=14893

          Issue ID: 14893
           Summary: std.concurrency: can't send shared arrays or shared
                    structs
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: P1
         Component: phobos
          Assignee: nobody puremagic.com
          Reporter: ag0aep6g gmail.com

Shared array:
----
void main()
{
    shared int[] x;
    import std.concurrency;
    send(thisTid, x);
}
----
/home/test/d/dmd2/linux/bin64/../../src/phobos/std/variant.d(319): Error:
cannot implicitly convert expression (*src) of type shared(int)[] to
const(int)[]
/home/test/d/dmd2/linux/bin64/../../src/phobos/std/variant.d(619): Error:
function core.stdc.string.memcpy (void* s1, const(void*) s2, ulong n) is not
callable using argument types (ubyte[32]*, shared(int)*, ulong)
/home/test/d/dmd2/linux/bin64/../../src/phobos/std/variant.d(420): Error:
template instance std.variant.VariantN!32LU.VariantN.opAssign!(shared(int))
error instantiating
/home/test/d/dmd2/linux/bin64/../../src/phobos/std/variant.d(638):       
instantiated from here: handler!(shared(int)[])
/home/test/d/dmd2/linux/bin64/../../src/phobos/std/variant.d(554):       
instantiated from here: opAssign!(shared(int)[])
/home/test/d/dmd2/linux/bin64/../../src/phobos/std/concurrency.d(117):       
instantiated from here: __ctor!(shared(int)[])
/home/test/d/dmd2/linux/bin64/../../src/phobos/std/concurrency.d(628):       
... (2 instantiations, -v to show) ...
/home/test/d/dmd2/linux/bin64/../../src/phobos/std/concurrency.d(594):       
instantiated from here: _send!(shared(int[]))
test.d(5):        instantiated from here: send!(shared(int[]))
----

Shared struct:
----
struct S {}
void main()
{
    shared S x;
    import std.concurrency;
    send(thisTid, x);
}
----
/home/test/d/dmd2/linux/bin64/../../src/phobos/std/variant.d(619): Error:
function core.stdc.string.memcpy (void* s1, const(void*) s2, ulong n) is not
callable using argument types (ubyte[32]*, shared(S)*, ulong)
/home/test/d/dmd2/linux/bin64/../../src/phobos/std/variant.d(554): Error:
template instance std.variant.VariantN!32LU.VariantN.opAssign!(shared(S)) error
instantiating
/home/test/d/dmd2/linux/bin64/../../src/phobos/std/concurrency.d(117):       
instantiated from here: __ctor!(shared(S))
/home/test/d/dmd2/linux/bin64/../../src/phobos/std/concurrency.d(628):       
instantiated from here: __ctor!(shared(S))
/home/test/d/dmd2/linux/bin64/../../src/phobos/std/concurrency.d(618):       
instantiated from here: _send!(shared(S))
/home/test/d/dmd2/linux/bin64/../../src/phobos/std/concurrency.d(594):       
instantiated from here: _send!(shared(S))
test.d(6):        instantiated from here: send!(shared(S))
----

--
Aug 09 2015