| 194 | } |
| 195 | |
| 196 | bool BeContext::AreTypesEqual(BeType* lhs, BeType* rhs) |
| 197 | { |
| 198 | if (lhs == rhs) |
| 199 | return true; |
| 200 | |
| 201 | if (lhs->mTypeCode != rhs->mTypeCode) |
| 202 | return false; |
| 203 | |
| 204 | switch (lhs->mTypeCode) |
| 205 | { |
| 206 | case BeTypeCode_None: |
| 207 | case BeTypeCode_NullPtr: |
| 208 | case BeTypeCode_Boolean: |
| 209 | case BeTypeCode_Int8: |
| 210 | case BeTypeCode_Int16: |
| 211 | case BeTypeCode_Int32: |
| 212 | case BeTypeCode_Int64: |
| 213 | case BeTypeCode_Float: |
| 214 | case BeTypeCode_Double: |
| 215 | return true; |
| 216 | case BeTypeCode_Pointer: |
| 217 | return AreTypesEqual(((BePointerType*)lhs)->mElementType, ((BePointerType*)rhs)->mElementType); |
| 218 | case BeTypeCode_SizedArray: |
| 219 | { |
| 220 | auto lhsSizedArray = (BeSizedArrayType*)lhs; |
| 221 | auto rhsSizedArray = (BeSizedArrayType*)rhs; |
| 222 | if (lhsSizedArray->mLength != rhsSizedArray->mLength) |
| 223 | return false; |
| 224 | return AreTypesEqual(lhsSizedArray->mElementType, rhsSizedArray->mElementType); |
| 225 | } |
| 226 | case BeTypeCode_Vector: |
| 227 | { |
| 228 | auto lhsSizedArray = (BeVectorType*)lhs; |
| 229 | auto rhsSizedArray = (BeVectorType*)rhs; |
| 230 | if (lhsSizedArray->mLength != rhsSizedArray->mLength) |
| 231 | return false; |
| 232 | return AreTypesEqual(lhsSizedArray->mElementType, rhsSizedArray->mElementType); |
| 233 | } |
| 234 | } |
| 235 | return false; |
| 236 | } |
no outgoing calls
no test coverage detected