[Issue 1133] New: Header generation omits parathesis

d-bugmail at puremagic.com d-bugmail at puremagic.com
Thu Apr 12 10:57:16 PDT 2007


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 at digitalmars.com
        ReportedBy: benoit at 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);



}
}

========================================


-- 



More information about the Digitalmars-d-bugs mailing list