| 1483 | } |
| 1484 | |
| 1485 | void BfAutoComplete::AddTopLevelTypes(BfAstNode* identifierNode, bool onlyAttribute) |
| 1486 | { |
| 1487 | String filter; |
| 1488 | |
| 1489 | if (identifierNode != NULL) |
| 1490 | { |
| 1491 | filter = identifierNode->ToString(); |
| 1492 | mInsertStartIdx = identifierNode->GetSrcStart(); |
| 1493 | mInsertEndIdx = identifierNode->GetSrcEnd(); |
| 1494 | } |
| 1495 | |
| 1496 | AddEntry(AutoCompleteEntry("token", "function"), filter); |
| 1497 | AddEntry(AutoCompleteEntry("token", "delegate"), filter); |
| 1498 | AddEntry(AutoCompleteEntry("token", "decltype"), filter); |
| 1499 | |
| 1500 | if (mModule->mCurTypeInstance != NULL) |
| 1501 | { |
| 1502 | if (!onlyAttribute) |
| 1503 | { |
| 1504 | auto activeTypeDef = mModule->GetActiveTypeDef(); |
| 1505 | for (auto genericParam : activeTypeDef->mGenericParamDefs) |
| 1506 | AddEntry(AutoCompleteEntry("generic", genericParam->mName), filter); |
| 1507 | } |
| 1508 | |
| 1509 | AddCurrentTypes(mModule->mCurTypeInstance, filter, true, true, onlyAttribute); |
| 1510 | } |
| 1511 | |
| 1512 | if (mModule->mCurMethodInstance != NULL) |
| 1513 | { |
| 1514 | if (!onlyAttribute) |
| 1515 | { |
| 1516 | for (auto genericParam : mModule->mCurMethodInstance->mMethodDef->mGenericParams) |
| 1517 | AddEntry(AutoCompleteEntry("generic", genericParam->mName), filter); |
| 1518 | } |
| 1519 | } |
| 1520 | |
| 1521 | if (!onlyAttribute) |
| 1522 | { |
| 1523 | BfTypeDef* showTypeDef = NULL; |
| 1524 | for (auto& systemTypeDefEntry : mModule->mSystem->mSystemTypeDefs) |
| 1525 | { |
| 1526 | auto systemTypeDef = systemTypeDefEntry.mValue; |
| 1527 | if ((systemTypeDef->mTypeCode == BfTypeCode_IntUnknown) || (systemTypeDef->mTypeCode == BfTypeCode_UIntUnknown)) |
| 1528 | continue; |
| 1529 | if ((AddEntry(AutoCompleteEntry("valuetype", systemTypeDef->mName->mString.mPtr), filter)) && (mIsGetDefinition)) |
| 1530 | showTypeDef = systemTypeDef; |
| 1531 | } |
| 1532 | AddEntry(AutoCompleteEntry("valuetype", "SelfBase"), filter); |
| 1533 | AddEntry(AutoCompleteEntry("valuetype", "SelfOuter"), filter); |
| 1534 | |
| 1535 | if (showTypeDef != NULL) |
| 1536 | { |
| 1537 | auto showType = mModule->ResolveTypeDef(showTypeDef); |
| 1538 | BfTypeInstance* showTypeInst = NULL; |
| 1539 | if (showType->IsPrimitiveType()) |
| 1540 | showTypeInst = mModule->GetWrappedStructType(showType); |
| 1541 | else |
| 1542 | showTypeInst = showType->ToTypeInstance(); |
no test coverage detected