1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-11 04:52:21 +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; 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(); BfToken token = tokenNode->GetToken();
@ -5867,8 +5867,9 @@ BfAstNode* BfReducer::ReadTypeMember(BfTokenNode* tokenNode, int depth, BfAstNod
return NULL; return NULL;
} }
SetAndRestoreValue<BfAstNode*> prevTypeMemberNodeStart(mTypeMemberNodeStart, attributes, !declStarted);
mVisitorPos.MoveNext(); mVisitorPos.MoveNext();
auto memberNode = ReadTypeMember(nextNode, 0, (deferredHeadNode != NULL) ? deferredHeadNode : attributes); auto memberNode = ReadTypeMember(nextNode, true, depth, (deferredHeadNode != NULL) ? deferredHeadNode : attributes);
if (memberNode == NULL) if (memberNode == NULL)
return NULL; return NULL;
@ -6151,7 +6152,7 @@ BfAstNode* BfReducer::ReadTypeMember(BfTokenNode* tokenNode, int depth, BfAstNod
if (nextNode != NULL) if (nextNode != NULL)
{ {
mVisitorPos.MoveNext(); mVisitorPos.MoveNext();
typeMember = ReadTypeMember(nextNode, depth + 1); typeMember = ReadTypeMember(nextNode, true, depth + 1);
} }
auto memberDecl = BfNodeDynCast<BfMemberDeclaration>(typeMember); 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); // SetAndRestoreValue<BfAstNode*> prevTypeMemberNodeStart(mTypeMemberNodeStart, node, false);
// if (depth == 0) // if (depth == 0)
@ -6618,10 +6619,8 @@ BfAstNode* BfReducer::ReadTypeMember(BfAstNode* node, int depth, BfAstNode* defe
} }
else else
{ {
SetAndRestoreValue<BfAstNode*> prevTypeMemberNodeStart(mTypeMemberNodeStart, tokenNode, false); SetAndRestoreValue<BfAstNode*> prevTypeMemberNodeStart(mTypeMemberNodeStart, tokenNode, !declStarted);
if (depth == 0) return ReadTypeMember(tokenNode, declStarted, depth, deferredHeadNode);
prevTypeMemberNodeStart.Set();
return ReadTypeMember(tokenNode, depth, deferredHeadNode);
} }
} }
else if (auto block = BfNodeDynCast<BfBlock>(node)) else if (auto block = BfNodeDynCast<BfBlock>(node))
@ -8024,6 +8023,7 @@ BfAstNode* BfReducer::HandleTopLevel(BfBlock* node)
mVisitorPos.Write(child); // Just keep it... mVisitorPos.Write(child); // Just keep it...
continue; continue;
} }
SetAndRestoreValue<BfAstNode*> prevTypeMemberNodeStart(mTypeMemberNodeStart, tokenNode);
auto newNode = CreateTopLevelObject(tokenNode, NULL); auto newNode = CreateTopLevelObject(tokenNode, NULL);
hadPrevFail = newNode == NULL; hadPrevFail = newNode == NULL;
@ -8240,7 +8240,7 @@ BfAstNode* BfReducer::CreateTopLevelObject(BfTokenNode* tokenNode, BfAttributeDi
FailAfter("Expected type declaration", tokenNode); FailAfter("Expected type declaration", tokenNode);
return NULL; return NULL;
} }
mVisitorPos.MoveNext(); mVisitorPos.MoveNext();
auto topLevelObject = CreateTopLevelObject(nextToken, attributes); auto topLevelObject = CreateTopLevelObject(nextToken, attributes);
if (topLevelObject == NULL) if (topLevelObject == NULL)
@ -8294,7 +8294,7 @@ BfAstNode* BfReducer::CreateTopLevelObject(BfTokenNode* tokenNode, BfAttributeDi
return NULL; return NULL;
} }
mVisitorPos.MoveNext(); mVisitorPos.MoveNext();
auto topLevelObject = CreateTopLevelObject(nextToken, attributes); auto topLevelObject = CreateTopLevelObject(nextToken, attributes);
if (topLevelObject == NULL) if (topLevelObject == NULL)
{ {
@ -8490,7 +8490,7 @@ BfAstNode* BfReducer::CreateTopLevelObject(BfTokenNode* tokenNode, BfAttributeDi
typeDeclaration->mNameNode = identifierNode; typeDeclaration->mNameNode = identifierNode;
ReplaceNode(tokenNode, typeDeclaration); ReplaceNode(tokenNode, typeDeclaration);
MoveNode(identifierNode, typeDeclaration); MoveNode(identifierNode, typeDeclaration);
typeDeclaration->mDocumentation = FindDocumentation(typeDeclaration); typeDeclaration->mDocumentation = FindDocumentation(mTypeMemberNodeStart);
auto nextNode = mVisitorPos.GetNext(); auto nextNode = mVisitorPos.GetNext();
auto chevronToken = BfNodeDynCast<BfTokenNode>(nextNode); 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* 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); 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); void ReadPropertyBlock(BfPropertyDeclaration* propertyDeclaration, BfBlock* block);
BfAstNode* ReadTypeMember(BfTokenNode* node, int depth = 0, BfAstNode* deferredHeadNode = NULL); BfAstNode* ReadTypeMember(BfTokenNode* node, bool declStarted = false, int depth = 0, BfAstNode* deferredHeadNode = NULL);
BfAstNode* ReadTypeMember(BfAstNode* node, int depth = 0, BfAstNode* deferredHeadNode = NULL); BfAstNode* ReadTypeMember(BfAstNode* node, bool declStarted = false, int depth = 0, BfAstNode* deferredHeadNode = NULL);
BfIdentifierNode* CompactQualifiedName(BfAstNode* leftNode); BfIdentifierNode* CompactQualifiedName(BfAstNode* leftNode);
void TryIdentifierConvert(int readPos); void TryIdentifierConvert(int readPos);
void CreateQualifiedNames(BfAstNode* node); void CreateQualifiedNames(BfAstNode* node);