| 3180 | } |
| 3181 | |
| 3182 | bool CGenerator::containsString(DataType *dataType) |
| 3183 | { |
| 3184 | if (dataType->getTrueDataType()->isList()) |
| 3185 | { |
| 3186 | ListType *l = dynamic_cast<ListType *>(dataType->getTrueDataType()); |
| 3187 | assert(l); |
| 3188 | return containsString(l->getElementType()); |
| 3189 | } |
| 3190 | DataType *trueDataType = dataType->getTrueContainerDataType(); |
| 3191 | switch (trueDataType->getDataType()) |
| 3192 | { |
| 3193 | case DataType::data_type_t::kStructType: |
| 3194 | { |
| 3195 | StructType *s = dynamic_cast<StructType *>(trueDataType); |
| 3196 | assert(s); |
| 3197 | return s->containStringMember(); |
| 3198 | } |
| 3199 | case DataType::data_type_t::kUnionType: |
| 3200 | { |
| 3201 | UnionType *u = dynamic_cast<UnionType *>(trueDataType); |
| 3202 | assert(u); |
| 3203 | for (UnionCase *unionCase : u->getUniqueCases()) |
| 3204 | { |
| 3205 | if (!unionCase->caseMemberIsVoid()) |
| 3206 | { |
| 3207 | for (string unionCaseName : unionCase->getMemberDeclarationNames()) |
| 3208 | { |
| 3209 | StructMember *unionCaseMember = unionCase->getUnionMemberDeclaration(unionCaseName); |
| 3210 | if (containsString(unionCaseMember->getDataType())) |
| 3211 | { |
| 3212 | return true; |
| 3213 | } |
| 3214 | } |
| 3215 | } |
| 3216 | } |
| 3217 | return false; |
| 3218 | } |
| 3219 | default: |
| 3220 | { |
| 3221 | if (trueDataType->isString()) |
| 3222 | { |
| 3223 | return true; |
| 3224 | } |
| 3225 | return false; |
| 3226 | } |
| 3227 | } |
| 3228 | } |
| 3229 | |
| 3230 | bool CGenerator::containsList(DataType *dataType) |
| 3231 | { |
nothing calls this directly
no test coverage detected