1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-10 12:32:20 +02:00

Fixed documentation-finding with attributed declarations

This commit is contained in:
Brian Fiete 2021-10-31 07:31:08 -07:00
parent 41f7fd57e6
commit 7436b201be
2 changed files with 13 additions and 13 deletions

View file

@ -5847,7 +5847,7 @@ BfFieldDeclaration* BfReducer::CreateFieldDeclaration(BfTokenNode* tokenNode, Bf
return fieldDeclaration;
}
BfAstNode* BfReducer::ReadTypeMember(BfTokenNode* tokenNode, int depth, BfAstNode* deferredHeadNode)
BfAstNode* BfReducer::ReadTypeMember(BfTokenNode* tokenNode, bool declStarted, int depth, BfAstNode* deferredHeadNode)
{
BfToken token = tokenNode->GetToken();
@ -5867,8 +5867,9 @@ BfAstNode* BfReducer::ReadTypeMember(BfTokenNode* tokenNode, int depth, BfAstNod
return NULL;
}
SetAndRestoreValue<BfAstNode*> prevTypeMemberNodeStart(mTypeMemberNodeStart, attributes, !declStarted);
mVisitorPos.MoveNext();
auto memberNode = ReadTypeMember(nextNode, 0, (deferredHeadNode != NULL) ? deferredHeadNode : attributes);
auto memberNode = ReadTypeMember(nextNode, true, depth, (deferredHeadNode != NULL) ? deferredHeadNode : attributes);
if (memberNode == NULL)
return NULL;
@ -6151,7 +6152,7 @@ BfAstNode* BfReducer::ReadTypeMember(BfTokenNode* tokenNode, int depth, BfAstNod
if (nextNode != NULL)
{
mVisitorPos.MoveNext();
typeMember = ReadTypeMember(nextNode, depth + 1);
typeMember = ReadTypeMember(nextNode, true, depth + 1);
}
auto memberDecl = BfNodeDynCast<BfMemberDeclaration>(typeMember);
@ -6571,7 +6572,7 @@ void BfReducer::ReadPropertyBlock(BfPropertyDeclaration* propertyDeclaration, Bf
}
}
BfAstNode* BfReducer::ReadTypeMember(BfAstNode* node, int depth, BfAstNode* deferredHeadNode)
BfAstNode* BfReducer::ReadTypeMember(BfAstNode* node, bool declStarted, int depth, BfAstNode* deferredHeadNode)
{
// SetAndRestoreValue<BfAstNode*> prevTypeMemberNodeStart(mTypeMemberNodeStart, node, false);
// if (depth == 0)
@ -6618,10 +6619,8 @@ BfAstNode* BfReducer::ReadTypeMember(BfAstNode* node, int depth, BfAstNode* defe
}
else
{
SetAndRestoreValue<BfAstNode*> prevTypeMemberNodeStart(mTypeMemberNodeStart, tokenNode, false);
if (depth == 0)
prevTypeMemberNodeStart.Set();
return ReadTypeMember(tokenNode, depth, deferredHeadNode);
SetAndRestoreValue<BfAstNode*> prevTypeMemberNodeStart(mTypeMemberNodeStart, tokenNode, !declStarted);
return ReadTypeMember(tokenNode, declStarted, depth, deferredHeadNode);
}
}
else if (auto block = BfNodeDynCast<BfBlock>(node))
@ -8024,6 +8023,7 @@ BfAstNode* BfReducer::HandleTopLevel(BfBlock* node)
mVisitorPos.Write(child); // Just keep it...
continue;
}
SetAndRestoreValue<BfAstNode*> prevTypeMemberNodeStart(mTypeMemberNodeStart, tokenNode);
auto newNode = CreateTopLevelObject(tokenNode, NULL);
hadPrevFail = newNode == NULL;
@ -8240,7 +8240,7 @@ BfAstNode* BfReducer::CreateTopLevelObject(BfTokenNode* tokenNode, BfAttributeDi
FailAfter("Expected type declaration", tokenNode);
return NULL;
}
mVisitorPos.MoveNext();
auto topLevelObject = CreateTopLevelObject(nextToken, attributes);
if (topLevelObject == NULL)
@ -8294,7 +8294,7 @@ BfAstNode* BfReducer::CreateTopLevelObject(BfTokenNode* tokenNode, BfAttributeDi
return NULL;
}
mVisitorPos.MoveNext();
auto topLevelObject = CreateTopLevelObject(nextToken, attributes);
if (topLevelObject == NULL)
{
@ -8490,7 +8490,7 @@ BfAstNode* BfReducer::CreateTopLevelObject(BfTokenNode* tokenNode, BfAttributeDi
typeDeclaration->mNameNode = identifierNode;
ReplaceNode(tokenNode, typeDeclaration);
MoveNode(identifierNode, typeDeclaration);
typeDeclaration->mDocumentation = FindDocumentation(typeDeclaration);
typeDeclaration->mDocumentation = FindDocumentation(mTypeMemberNodeStart);
auto nextNode = mVisitorPos.GetNext();
auto chevronToken = BfNodeDynCast<BfTokenNode>(nextNode);

View file

@ -187,8 +187,8 @@ public:
BfTokenNode* ParseMethodParams(BfAstNode* node, SizedArrayImpl<BfParameterDeclaration*>* params, SizedArrayImpl<BfTokenNode*>* commas, BfToken endToken, bool requireNames);
BfTokenNode* ReadArguments(BfAstNode* parentNode, BfAstNode* afterNode, SizedArrayImpl<BfExpression*>* arguments, SizedArrayImpl<BfTokenNode*>* commas, BfToken endToken, bool allowSkippedArgs = false, CreateExprFlags createExprFlags = CreateExprFlags_None);
void ReadPropertyBlock(BfPropertyDeclaration* propertyDeclaration, BfBlock* block);
BfAstNode* ReadTypeMember(BfTokenNode* node, int depth = 0, BfAstNode* deferredHeadNode = NULL);
BfAstNode* ReadTypeMember(BfAstNode* node, int depth = 0, BfAstNode* deferredHeadNode = NULL);
BfAstNode* ReadTypeMember(BfTokenNode* node, bool declStarted = false, int depth = 0, BfAstNode* deferredHeadNode = NULL);
BfAstNode* ReadTypeMember(BfAstNode* node, bool declStarted = false, int depth = 0, BfAstNode* deferredHeadNode = NULL);
BfIdentifierNode* CompactQualifiedName(BfAstNode* leftNode);
void TryIdentifierConvert(int readPos);
void CreateQualifiedNames(BfAstNode* node);