www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 6632] New: toUTFz sometimes does not work with const parameters

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

           Summary: toUTFz sometimes does not work with const parameters
           Product: D
           Version: D2
          Platform: Other
        OS/Version: Windows
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Phobos
        AssignedTo: nobody puremagic.com
        ReportedBy: andrej.mitrovich gmail.com



17:47:46 PDT ---
import std.utf;

void main()
{
    const char[] c = "";
    auto res1 = toUTFz!(const(char)*)(c);  // doesn't work
    auto res2 = toUTFz!(const(wchar)*)(c);  // works ok
}

D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\utf.d(1481): Error: variable
std.utf.toUTFz!(const(char)*,const(char[])).toUTFz.str cannot modify const

test.d(8): Error: template instance std.utf.toUTFz!(const(char)*,const(char[]))
error instantiating

Funny thing is it works fine with immutable:

immutable char[] c = "";
auto res1 = toUTFz!(const(char)*)(c);  // ok

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


zeljkog <zeljko.grk gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |zeljko.grk gmail.com



It is compiler issue:

import std.stdio;

void f(S)(S str){
    writeln(str);
}

alias f!(string) fc;
alias f!(wstring) fc;

void main(){
    fc("foo");      // L11

//~     fc("foo"c);     // works
//~     auto s = "foo";  
//~      fc(s);       // works  
}

//~ Compilation breaks with message:

//~ bug.d(11): Error: function alias bug.f called with argument types:
//~     ((string))
//~ matches both:
//~     bug.f!(string).f(string str)
//~ and:
//~     bug.f!(immutable(wchar)[]).f(immutable(wchar)[] str)

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




Sorry, it's another issue.

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


Andrej Mitrovic <andrej.mitrovich gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|normal                      |major



09:58:23 PST ---
import std.utf;

const wchar[] foo = "foo";

void main()
{
    auto wptr = toUTFz!(const(wchar)*)(foo);  // NG
}

It would be great if toUTFz worked in *all* cases.

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


Jonathan M Davis <jmdavisProg gmx.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
                 CC|                            |jmdavisProg gmx.com



PST ---
Well obviously, the fact that it doesn't is a bug. I expect that I'll have it
fixed before the next release. I probably should have had it fixed for the last
one but have been busy and didn't get around to it.

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




10:51:57 PST ---
Thanks Jonathan.

This kind of call is common when passing wstring constants to Win API
functions.

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




PST ---
By the way, in case you didn't notice, I should point out that thanks to the
discussion on the newsgroup about it, toUTF16z is no longer scheduled for
deprecation. It's still using its old implementation internally, but should be
switched over to using toUTFz by the next release (which will allow it to take
all of the string types). So, if your use case of toUTFz matches toUTF16z, then
you can use that.

-- 
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=6632




11:24:01 PST ---
Ok good to know, this will help porting older code. Thanks.

-- 
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=6632




PST ---
https://github.com/D-Programming-Language/phobos/pull/279

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


Andrej Mitrovic <andrej.mitrovich gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|                            |FIXED



06:57:43 PST ---
Fixed in 2.057, thanks Jonathan.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jan 04 2012
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6632




PST ---
LOL. My fix actually hasn't been checked in yet. The changes to IFTI made it
completely unnecessary (and is why it works in 2.057). In fact, I just removed
my fix from the pull request for adding toUTF, since there's no reason to have
it anymore. The change to how IFTI deals with const and immutable arrays is
moste definitely a welcome one.

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