digitalmars.D.bugs - [Issue 1133] New: Header generation omits parathesis
- d-bugmail puremagic.com (182/182) Apr 12 2007 http://d.puremagic.com/issues/show_bug.cgi?id=1133
- d-bugmail puremagic.com (8/8) May 24 2007 http://d.puremagic.com/issues/show_bug.cgi?id=1133
- d-bugmail puremagic.com (4/4) Jun 12 2007 http://d.puremagic.com/issues/show_bug.cgi?id=1133
- d-bugmail puremagic.com (10/10) Sep 29 2007 http://d.puremagic.com/issues/show_bug.cgi?id=1133
- d-bugmail puremagic.com (5/7) Sep 29 2007 http://d.puremagic.com/issues/show_bug.cgi?id=1133
- d-bugmail puremagic.com (5/5) Sep 29 2007 http://d.puremagic.com/issues/show_bug.cgi?id=1133
- d-bugmail puremagic.com (7/10) Sep 29 2007 http://d.puremagic.com/issues/show_bug.cgi?id=1133
- d-bugmail puremagic.com (46/46) Mar 07 2009 http://d.puremagic.com/issues/show_bug.cgi?id=1133
- d-bugmail puremagic.com (11/11) Oct 28 2009 http://d.puremagic.com/issues/show_bug.cgi?id=1133
http://d.puremagic.com/issues/show_bug.cgi?id=1133
           Summary: Header generation omits parathesis
           Product: D
           Version: 1.011
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla digitalmars.com
        ReportedBy: benoit tionex.de
(1) does not compile
in the second example, all paranthesis for the static if are missing.
With (2) the problem starts.
========================================
= D code:
========================================
    public synchronized bool contains( dejavu.lang.JObject.JObject value ){
        return (( value in mData ) !is null );
    }
========================================
= Generated Header Code:
========================================
    bool containsKey(JObject key)
{
return key in mData !is null; //(1)
}
========================================
= D code:
========================================
T jarraycast(T, U )( U u ) {
    // elem -> []
    static if( isArrayArrayType!(T) ){
        static if( isArrayArrayType!(U) ){
            //pragma( msg, "[][]->[][] jarraycast!( " ~ demangleType!(
T.mangleof ) ~ ", " ~ demangleType!( U.mangleof ) ~ ")" );
            static assert( false );
        }
        else static if( isArrayType!(U) ){
            //pragma( msg, "[]->[][] jarraycast!( " ~ demangleType!( T.mangleof
) ~ ", " ~ demangleType!( U.mangleof ) ~ ")" );
            static assert( false );
        }
        else static if( is( U : JObject )){
            //pragma( msg, "obj->[][] jarraycast!( " ~ demangleType!(
T.mangleof ) ~ ", " ~ demangleType!( U.mangleof ) ~ ")" );
            static assert( false );
        }
        else {
            //pragma( msg, "err1: jarraycast!( " ~ demangleType!( T.mangleof )
~ ", " ~ demangleType!( U.mangleof ) ~ ")" );
            static assert( false );
        }
    }
    else static if( isArrayType!(T) ){
        static if( isArrayArrayType!(U) ){
            ////pragma( msg, "[][]->[] jarraycast!( " ~ demangleType!(
T.mangleof ) ~ ", " ~ demangleType!( U.mangleof ) ~ ")" );
            alias ElemType!(T) TE;
            alias ElemType!(U) UE;
            T res;
            res.length = u.length;
            for( int i = 0; i < u.length; i++ ){
                res[i] = jarraycast!(TE,UE)(u[i]);
            }
            return res;
        }
        else static if( isArrayType!(U) ){
            ////pragma( msg, "[]->[] jarraycast!( " ~ demangleType!( T.mangleof
) ~ ", " ~ demangleType!( U.mangleof ) ~ ")" );
            alias ElemType!(T) TE;
            return arraycast!(TE)(u);
        }
        else static if( is( U : JObject )){
            //pragma( msg, "obj->[] jarraycast!( " ~ demangleType!( T.mangleof
) ~ ", " ~ demangleType!( U.mangleof ) ~ ")" );
            JArrayT!(T) uarr = cast( JArrayT!(T) ) u;
            if( uarr is null ){
                return null;
            }
            else{
                return uarr.toArray();
            }
        }
        else {
            //pragma( msg, "err2: jarraycast!( " ~ demangleType!( T.mangleof )
~ ", " ~ demangleType!( U.mangleof ) ~ ")" );
            static assert( false );
        }
    }
    else static if( is( T : JObject )){
        static if( isArrayType!(U) ){
            //pragma( msg, "[]->obj jarraycast!( " ~ demangleType!( T.mangleof
) ~ ", " ~ demangleType!( U.mangleof ) ~ ")" );
            return JArrayT!(U).create( u );
        }
        else static if( is( U : JObject )){
            //pragma( msg, "obj->obj jarraycast!( " ~ demangleType!( T.mangleof
) ~ ", " ~ demangleType!( U.mangleof ) ~ ")" );
            static assert( false );
        }
        else {
            //pragma( msg, "err3: jarraycast!( " ~ demangleType!( T.mangleof )
~ ", " ~ demangleType!( U.mangleof ) ~ ")" );
            static assert( false );
        }
    }
    else {
        //pragma( msg, "err4: jarraycast!( " ~ demangleType!( T.mangleof ) ~ ",
" ~ demangleType!( U.mangleof ) ~ ")" );
        static assert( false );
    }
    //return null;
}
========================================
= Generated Header Code:
========================================
template jarraycast(T,U)
{
T jarraycast(U u)
{
static if(isArrayArrayType!(T))
static if(isArrayArrayType!(U))
static assert(false);
else
static if(isArrayType!(U))
static assert(false);
else
static if(is(U : JObject))
static assert(false);
else
static assert(false);
else
static if(isArrayType!(T))
static if(isArrayArrayType!(U)) //(2)
alias ElemType!(T) TE;
alias ElemType!(U) UE;
T res;
res.length = u.length;
{
for (int i = 0;
 i < u.length; i++)
{
{
res[i] = jarraycast!(TE,UE)(u[i]);
}
}
}
return res;
else
static if(isArrayType!(U))
alias ElemType!(T) TE;
return arraycast!(TE)(u);
else
static if(is(U : JObject))
JArrayT!(T) uarr = cast(JArrayT!(T))u;
if (uarr is null)
{
return null;
}
else
{
return uarr.toArray();
}
else
static assert(false);
else
static if(is(T : JObject))
static if(isArrayType!(U))
return JArrayT!(U).create(u);
else
static if(is(U : JObject))
static assert(false);
else
static assert(false);
else
static assert(false);
}
}
========================================
-- 
 Apr 12 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1133
They are also omited after version:
.d
version(id) { x; y; } else { z; h; }
.di
version(id) x; y; else { z; h; }
-- 
 May 24 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1133 ------- I can confirm that the static ifs are still losing the braces in DMD 1.015. --
 Jun 12 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1133
smjg iname.com changed:
           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |smjg iname.com
            Summary|Header generation omits     |Header generation omits
                   |parathesis                  |parentheses
What exactly is this header generation to which you refer?
-- 
 Sep 29 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1133What exactly is this header generation to which you refer?"dmd -H" --
 Sep 29 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1133 Oh yes. But it's puzzling me that, in the first example, the generated header code seems to bear little relation to the original code. --
 Sep 29 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1133Oh yes. But it's puzzling me that, in the first example, the generated header code seems to bear little relation to the original code.yes, i probably hand edited the code to cut out unrelevant info. So the value was renamed to key. Nevertheless it shows that the necessary braces are missing. --
 Sep 29 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1133
1.039 works correctly for first example. Second is not reproductible, next time
send full examples.
class A {
        Object[Object] mData;
    public synchronized bool contains( Object value ){
            return (( value in mData ) !is null );
    }
}
// D import file generated from 'd1.d'
class A
{
    Object[Object] mData;
    public
{
    synchronized
{
    bool contains(Object value)
{
return (value in mData) !is null;
}
}
}
}
// D import file generated from 'd1.d'
class A
{
    Object[Object] mData;
    public
{
    synchronized
{
    bool contains(Object value)
{
return (value in mData) !is null;
}
}
}
}
-- 
 Mar 07 2009
http://d.puremagic.com/issues/show_bug.cgi?id=1133
Don <clugdbug yahoo.com.au> changed:
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED
This was fixed in 1.037, 1.038, or 1.039.
-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
 Oct 28 2009








 
  
  
 
 d-bugmail puremagic.com
 d-bugmail puremagic.com 