From bf5e68902943d330304012bed5b44be978975e88 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Wed, 21 Oct 2020 09:34:08 -0700 Subject: [PATCH] Fixed documentation on member with attributes --- IDE/src/ui/AutoComplete.bf | 4 +++- IDEHelper/Compiler/BfAutoComplete.cpp | 25 ++++++++++++++++++++----- IDEHelper/Compiler/BfReducer.cpp | 6 +++++- 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/IDE/src/ui/AutoComplete.bf b/IDE/src/ui/AutoComplete.bf index e24fbfbf..f64a1c4d 100644 --- a/IDE/src/ui/AutoComplete.bf +++ b/IDE/src/ui/AutoComplete.bf @@ -82,13 +82,15 @@ namespace IDE.ui continue; } - if (c == '\x04') + if ((c == '\x04') || (c == '\x05')) { queuedSpace = false; atLineStart = true; lineHadStar = false; lineHadContent = false; mDocString.Append('\n'); + if (c == '\x05') + mDocString.Append(" "); continue; } diff --git a/IDEHelper/Compiler/BfAutoComplete.cpp b/IDEHelper/Compiler/BfAutoComplete.cpp index 249e63d1..24793a8b 100644 --- a/IDEHelper/Compiler/BfAutoComplete.cpp +++ b/IDEHelper/Compiler/BfAutoComplete.cpp @@ -497,7 +497,7 @@ void BfAutoComplete::AddMethod(BfTypeInstance* typeInstance, BfMethodDef* method else if (methodDecl->mDocumentation != NULL) { if (!str.IsEmpty()) - str += "\x04"; + str += "\x05"; methodDecl->mDocumentation->GetDocString(str); } if (!str.IsEmpty()) @@ -566,10 +566,15 @@ void BfAutoComplete::AddTypeDef(BfTypeDef* typeDef, const StringImpl& filter, bo String str; if (typeInst != NULL) str = mModule->TypeToString(typeInst, BfTypeNameFlag_ExtendedInfo); - if (typeDef->mTypeDeclaration->mDocumentation != NULL) + if (entryAdded->mDocumentation != NULL) + { + str += "\x04"; + str.Append(entryAdded->mDocumentation); + } + else if (typeDef->mTypeDeclaration->mDocumentation != NULL) { if (!str.IsEmpty()) - str += "\x04"; + str += "\x05"; typeDef->mTypeDeclaration->mDocumentation->GetDocString(str); } entryAdded->mDocumentation = mAlloc.AllocString(str); @@ -654,9 +659,14 @@ void BfAutoComplete::AddField(BfTypeInstance* typeInst, BfFieldDef* fieldDef, Bf str += mModule->TypeToString(typeInst); str += "."; str += fieldDef->mName; - if (documentation != NULL) + if (entryAdded->mDocumentation != NULL) { str += "\x04"; + str.Append(entryAdded->mDocumentation); + } + else if (documentation != NULL) + { + str += "\x05"; documentation->GetDocString(str); } entryAdded->mDocumentation = mAlloc.AllocString(str); @@ -722,9 +732,14 @@ void BfAutoComplete::AddProp(BfTypeInstance* typeInst, BfPropertyDef* propDef, c str += "set; "; str += "}"; - if (documentation != NULL) + if (entryAdded->mDocumentation != NULL) { str += "\x04"; + str.Append(entryAdded->mDocumentation); + } + else if (documentation != NULL) + { + str += "\x05"; documentation->GetDocString(str); } entryAdded->mDocumentation = mAlloc.AllocString(str); diff --git a/IDEHelper/Compiler/BfReducer.cpp b/IDEHelper/Compiler/BfReducer.cpp index 298a79e9..28eea2a8 100644 --- a/IDEHelper/Compiler/BfReducer.cpp +++ b/IDEHelper/Compiler/BfReducer.cpp @@ -5722,8 +5722,12 @@ BfAstNode* BfReducer::ReadTypeMember(BfTokenNode* tokenNode, int depth, BfAstNod return NULL; } + SetAndRestoreValue prevTypeMemberNodeStart(mTypeMemberNodeStart, attributes, false); + if (depth == 0) + prevTypeMemberNodeStart.Set(); + mVisitorPos.MoveNext(); - auto memberNode = ReadTypeMember(nextNode, 0, (deferredHeadNode != NULL) ? deferredHeadNode : attributes); + auto memberNode = ReadTypeMember(nextNode, depth + 1, (deferredHeadNode != NULL) ? deferredHeadNode : attributes); if (memberNode == NULL) return NULL; auto member = BfNodeDynCast(memberNode);