From 13c66a7d3150218a187867d659e10ce8db328541 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Sun, 31 Dec 2023 09:54:34 -0500 Subject: [PATCH] Added indexers to navigation --- IDEHelper/Compiler/BfCompiler.cpp | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/IDEHelper/Compiler/BfCompiler.cpp b/IDEHelper/Compiler/BfCompiler.cpp index 0254ec7d..6d32e90c 100644 --- a/IDEHelper/Compiler/BfCompiler.cpp +++ b/IDEHelper/Compiler/BfCompiler.cpp @@ -4147,17 +4147,38 @@ void BfCompiler::ProcessAutocompleteTempType() for (auto propDef : tempTypeDef->mProperties) { auto propDeclaration = BfNodeDynCast(propDef->mFieldDeclaration); - if ((propDeclaration == NULL) || (propDeclaration->mNameNode == NULL)) + if (propDeclaration == NULL) continue; - String propText = propDef->mName; + String propText; + BfAstNode* refNode = propDeclaration->mNameNode; + + auto indexerDeclaration = BfNodeDynCast(propDef->mFieldDeclaration); + if (indexerDeclaration != NULL) + { + refNode = indexerDeclaration->mThisToken; + propText = "this["; + for (int i = 0; i < indexerDeclaration->mParams.mSize; i++) + { + if (i > 0) + propText += ", "; + propText += indexerDeclaration->mParams[i]->ToString(); + } + propText += "]"; + } + else + { + if (propDeclaration->mNameNode == NULL) + continue; + propText = propDef->mName; + } + if (typeName != "@") propText = typeName + "." + propText; if (!autoCompleteResultString.empty()) autoCompleteResultString += "\n"; - BfAstNode* refNode = propDeclaration->mNameNode; module->UpdateSrcPos(refNode, (BfSrcPosFlags)(BfSrcPosFlag_NoSetDebugLoc | BfSrcPosFlag_Force)); propText += StrFormat("\tproperty\t%d\t%d", module->mCurFilePosition.mCurLine, module->mCurFilePosition.mCurColumn);