diff -r 7c5be05296e3 -r 5cbec15fadfe src/API.cpp --- a/src/API.cpp Sat Nov 17 22:02:08 2012 -0800 +++ b/src/API.cpp Sat Nov 17 23:11:38 2012 -0800 @@ -275,20 +275,25 @@ { switch (param.type()) { case Ke::Parameter::Array: - return type->isArray() && - type->levels() == 1 && - (type->contained()->isPrimitive() || type->contained()->isEnum()) && - (type->contained()->primitive() != PrimitiveType_Char); + { + if (!type->isArray()) + return false; + + ArrayType *atype = ArrayType::cast(type); + return atype->levels() == 1 && + (atype->contained()->isPrimitive() || atype->contained()->isEnum()) && + (atype->contained()->primitive() != PrimitiveType_Char); + } case Ke::Parameter::CharArray: - return type->isCharArray(); + return type->isArray() && ArrayType::cast(type)->isCharArray(); case Ke::Parameter::Float: return type->isFloat(); case Ke::Parameter::FloatRef: - return type->isReference() && type->contained()->isFloat(); + return type->isReference() && type->contained_ref()->isFloat(); case Ke::Parameter::Int: return type->isInt32() || type->isEnum(); case Ke::Parameter::IntRef: - return type->isReference() && (type->contained()->isInt32() || type->contained()->isEnum()); + return type->isReference() && (type->contained_ref()->isInt32() || type->contained_ref()->isEnum()); default: return false; }