| 7790 | } |
| 7791 | |
| 7792 | BfPointerType* BfModule::CreatePointerType(BfType* resolvedType) |
| 7793 | { |
| 7794 | BF_ASSERT(!resolvedType->IsVar()); |
| 7795 | |
| 7796 | auto pointerType = mContext->mPointerTypePool.Get(); |
| 7797 | pointerType->mContext = mContext; |
| 7798 | pointerType->mElementType = resolvedType; |
| 7799 | auto resolvedPointerType = (BfPointerType*)ResolveType(pointerType); |
| 7800 | if (resolvedPointerType != pointerType) |
| 7801 | { |
| 7802 | mContext->mPointerTypePool.GiveBack(pointerType); |
| 7803 | } |
| 7804 | else |
| 7805 | { |
| 7806 | if (resolvedType->IsDeleting()) |
| 7807 | { |
| 7808 | mCompiler->RequestExtraCompile(); |
| 7809 | InternalError("CreatePointerType using deleted type"); |
| 7810 | mContext->DeleteType(resolvedPointerType); |
| 7811 | } |
| 7812 | } |
| 7813 | |
| 7814 | BF_ASSERT(resolvedPointerType->mElementType == resolvedType); |
| 7815 | |
| 7816 | return resolvedPointerType; |
| 7817 | } |
| 7818 | |
| 7819 | BfConstExprValueType* BfModule::CreateConstExprValueType(const BfTypedValue& typedValue, bool allowCreate) |
| 7820 | { |
no test coverage detected