1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-16 15:24:10 +02:00

Indexer formatting fix

This commit is contained in:
Brian Fiete 2020-09-25 09:17:33 -07:00
parent e02b42d6f4
commit 9893cb9627
2 changed files with 22 additions and 11 deletions

View file

@ -2436,13 +2436,14 @@ void BfPrinter::Visit(BfPropertyDeclaration* propertyDeclaration)
if (auto block = BfNodeDynCast<BfBlock>(propertyDeclaration->mDefinitionBlock)) if (auto block = BfNodeDynCast<BfBlock>(propertyDeclaration->mDefinitionBlock))
{ {
bool doInlineBlock = false; bool doInlineBlock = false;
DoBlockOpen(block, true, &doInlineBlock); int indentStart = 0;
DoBlockOpen(block, true, &doInlineBlock, &indentStart);
for (auto method : propertyDeclaration->mMethods) for (auto method : propertyDeclaration->mMethods)
{ {
Visit(method); Visit(method);
} }
FlushVisitChild(); FlushVisitChild();
DoBlockClose(block, true, doInlineBlock); DoBlockClose(block, true, doInlineBlock, indentStart);
} }
else else
{ {
@ -2461,6 +2462,11 @@ void BfPrinter::Visit(BfPropertyDeclaration* propertyDeclaration)
FlushVisitChild(); FlushVisitChild();
} }
void BfPrinter::Visit(BfIndexerDeclaration* indexerDeclaration)
{
Visit((BfPropertyDeclaration*)indexerDeclaration);
}
void BfPrinter::Visit(BfFieldDeclaration* fieldDeclaration) void BfPrinter::Visit(BfFieldDeclaration* fieldDeclaration)
{ {
if (fieldDeclaration->mPrecedingComma != NULL) if (fieldDeclaration->mPrecedingComma != NULL)
@ -2749,8 +2755,10 @@ void BfPrinter::Visit(BfNamespaceDeclaration* namespaceDeclaration)
VisitChild(namespaceDeclaration->mBlock); VisitChild(namespaceDeclaration->mBlock);
} }
void BfPrinter::DoBlockOpen(BfBlock* block, bool queue, bool* outDoInlineBlock) void BfPrinter::DoBlockOpen(BfBlock* block, bool queue, bool* outDoInlineBlock, int* outIdentStart)
{ {
*outIdentStart = mNextStateModify.mWantVirtualIndent;
bool doInlineBlock = true; bool doInlineBlock = true;
if (block->mCloseBrace != NULL) if (block->mCloseBrace != NULL)
{ {
@ -2781,11 +2789,12 @@ void BfPrinter::DoBlockOpen(BfBlock* block, bool queue, bool* outDoInlineBlock)
*outDoInlineBlock = doInlineBlock; *outDoInlineBlock = doInlineBlock;
} }
void BfPrinter::DoBlockClose(BfBlock* block, bool queue, bool doInlineBlock) void BfPrinter::DoBlockClose(BfBlock* block, bool queue, bool doInlineBlock, int indentStart)
{ {
if (!doInlineBlock) if (!doInlineBlock)
{ {
ExpectUnindent(); ExpectUnindent();
mNextStateModify.mWantVirtualIndent = indentStart;
mNextStateModify.mDoingBlockClose = true; mNextStateModify.mDoingBlockClose = true;
} }
else else
@ -2799,7 +2808,8 @@ void BfPrinter::DoBlockClose(BfBlock* block, bool queue, bool doInlineBlock)
void BfPrinter::Visit(BfBlock* block) void BfPrinter::Visit(BfBlock* block)
{ {
bool doInlineBlock; bool doInlineBlock;
DoBlockOpen(block, false, &doInlineBlock); int indentStart = 0;
DoBlockOpen(block, false, &doInlineBlock, &indentStart);
for (auto& childNodeRef : *block) for (auto& childNodeRef : *block)
{ {
BfAstNode* child = childNodeRef; BfAstNode* child = childNodeRef;
@ -2811,7 +2821,7 @@ void BfPrinter::Visit(BfBlock* block)
SetAndRestoreValue<BfAstNode*> prevBlockMember(mCurBlockMember, child); SetAndRestoreValue<BfAstNode*> prevBlockMember(mCurBlockMember, child);
child->Accept(this); child->Accept(this);
} }
DoBlockClose(block, false, doInlineBlock); DoBlockClose(block, false, doInlineBlock, indentStart);
ExpectNewLine(); ExpectNewLine();
} }

View file

@ -95,8 +95,8 @@ public:
void ExpectIndent(); void ExpectIndent();
void ExpectUnindent(); void ExpectUnindent();
void VisitChildNextLine(BfAstNode* node); void VisitChildNextLine(BfAstNode* node);
void DoBlockOpen(BfBlock* block, bool queue, bool* outDoInlineBlock); void DoBlockOpen(BfBlock* block, bool queue, bool* outDoInlineBlock, int* outIdentStart);
void DoBlockClose(BfBlock* block, bool queue, bool doInlineBlock); void DoBlockClose(BfBlock* block, bool queue, bool doInlineBlock, int identStart);
void QueueMethodDeclaration(BfMethodDeclaration* methodDeclaration); void QueueMethodDeclaration(BfMethodDeclaration* methodDeclaration);
int CalcOrigLineSpacing(BfAstNode* bfAstNode, int* lineStartIdx); int CalcOrigLineSpacing(BfAstNode* bfAstNode, int* lineStartIdx);
void WriteIgnoredNode(BfAstNode* node); void WriteIgnoredNode(BfAstNode* node);
@ -197,6 +197,7 @@ public:
virtual void Visit(BfOperatorDeclaration* opreratorDeclaration) override; virtual void Visit(BfOperatorDeclaration* opreratorDeclaration) override;
virtual void Visit(BfPropertyMethodDeclaration* propertyDeclaration) override; virtual void Visit(BfPropertyMethodDeclaration* propertyDeclaration) override;
virtual void Visit(BfPropertyDeclaration* propertyDeclaration) override; virtual void Visit(BfPropertyDeclaration* propertyDeclaration) override;
virtual void Visit(BfIndexerDeclaration* indexerDeclaration) override;
virtual void Visit(BfFieldDeclaration* fieldDeclaration) override; virtual void Visit(BfFieldDeclaration* fieldDeclaration) override;
virtual void Visit(BfEnumCaseDeclaration* enumCaseDeclaration) override; virtual void Visit(BfEnumCaseDeclaration* enumCaseDeclaration) override;
virtual void Visit(BfTypeAliasDeclaration* typeDeclaration) override; virtual void Visit(BfTypeAliasDeclaration* typeDeclaration) override;