www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 3209] New: Please allow pure functions with input known at compile time to be executed at compile time

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

           Summary: Please allow pure functions with input known at
                    compile time to be executed at compile time
           Product: D
           Version: 2.031
          Platform: All
               URL: http://www.digitalmars.com/webnews/newsgroups.php?art_
                    group=digitalmars.D&article_id=93790
        OS/Version: Mac OS X
            Status: NEW
          Severity: enhancement
          Priority: P2
         Component: DMD
        AssignedTo: nobody puremagic.com
        ReportedBy: asd mailinator.com


Distinction between compile-time and run-time arguments is not intuitive when
the input is constant and function is pure:


pure bool isEmptyString(string str) {        
    static if (str == "") return true;
    return false;
}

void main()
{
    static if (isEmptyString(""))
    {
        pragma(msg,"works?");
    }
}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jul 25 2009
next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=3209


asd mailinator.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |INVALID




-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jul 25 2009
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=3209


Stewart Gordon <smjg iname.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |smjg iname.com





Please don't set a bug to invalid without giving a reason.  I nearly reopened
it pending an explanation, but then realised why this shouldn't work.

isEmptyString won't always be evaluated at compile-time, hence it's an attempt
at a static if on a non-CTC expression.

That said, the compiler output is slightly bloated, but that's another matter:
----------
bz3209.d(2): Error: expression str == "" is not constant or does not evaluate
to a bool
bz3209.d(8): Error: cannot evaluate isEmptyString("") at compile time
bz3209.d(8): Error: expression isEmptyString("") is not constant or does not
evaluate to a bool

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