www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 6939] New: shared pointers are type combined incorrectly

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6939

           Summary: shared pointers are type combined incorrectly
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody puremagic.com
        ReportedBy: timon.gehr gmx.ch



Tested with DMD 2.056

shared    int* x;
immutable int* y;
const     int* z;

static assert(is(typeof(1?x:y)  == shared(const(int))*)); // fail.
static assert(!is(typeof(1?x:y) == const(int)*));         // fail.

static assert(is(typeof(1?x:z)  == shared(const(int))*)); // fail.
static assert(!is(typeof(1?x:z) == const(int)*));         // fail.


All static assertions should pass.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Nov 12 2011
next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6939




Oops.

Obviously x and z should not have a common type at all.
So the third static assertion should not pass. (it currently fails for the
wrong reason though).

Replace the test with this:

shared    int* x;
immutable int* y;
const     int* z;

static assert(is(typeof(1?x:y)  == shared(const(int))*));  // fail
static assert(!is(typeof(1?x:y) == const(int)*));          // fail
static assert(!is(typeof(1?x:z)));                         // fail

shared    int[] a;
immutable int[] b;
const     int[] c;

static assert(is(typeof(1?a:b)  == shared(const(int))[])); // pass (ok)
static assert(!is(typeof(1?a:b) == const(int)[]));         // pass (ok)
static assert(!is(typeof(1?x:z)));                         // fail

All of these should pass.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Nov 12 2011
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6939


timon.gehr gmx.ch changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |accepts-invalid,
                   |                            |rejects-valid
            Summary|shared pointers are type    |wrong type qualifier
                   |combined incorrectly        |combination



...

static assert(!is(typeof(1?a:c)));                         // fail

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Nov 12 2011
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6939




inout is buggy too: inout and shared are combined to shared const.

inout(int[]) foo(inout int[] x, shared int[] y, inout int* a, shared int* b){
    static assert(!is(typeof(1?x:y))); // fail
    static assert(!is(typeof(1?a:b))); // fail
    return x;
}

Both assertions should pass.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Nov 12 2011
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6939


Kenji Hara <k.hara.pg gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |patch



https://github.com/D-Programming-Language/dmd/pull/571

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Dec 19 2011
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6939


Walter Bright <bugzilla digitalmars.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |bugzilla digitalmars.com
         Resolution|                            |FIXED



13:02:38 PST ---
https://github.com/D-Programming-Language/dmd/commit/06fe1ce97ef56cb86821114024c55f8d5fe0073c

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