mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-10 04:22:20 +02:00
Added support for C-style vararg methods
This commit is contained in:
parent
89e6b0d577
commit
7741344fd2
16 changed files with 129 additions and 68 deletions
|
@ -4440,13 +4440,21 @@ BfTypeReference* BfReducer::DoCreateTypeRef(BfAstNode* firstNode, CreateTypeRefF
|
|||
{
|
||||
int token = tokenNode->GetToken();
|
||||
if (token == BfToken_Dot)
|
||||
{
|
||||
auto dotTypeRef = mAlloc->Alloc<BfDotTypeReference>();
|
||||
ReplaceNode(firstNode, dotTypeRef);
|
||||
dotTypeRef->mDotToken = tokenNode;
|
||||
firstNode = dotTypeRef;
|
||||
isHandled = true;
|
||||
}
|
||||
else if (token == BfToken_DotDotDot)
|
||||
{
|
||||
auto dotTypeRef = mAlloc->Alloc<BfDotTypeReference>();
|
||||
ReplaceNode(firstNode, dotTypeRef);
|
||||
dotTypeRef->mDotToken = tokenNode;
|
||||
firstNode = dotTypeRef;
|
||||
isHandled = true;
|
||||
//return dotTypeRef;
|
||||
return dotTypeRef;
|
||||
}
|
||||
else if ((token == BfToken_Star) && (mAllowTypeWildcard))
|
||||
{
|
||||
|
@ -8402,7 +8410,8 @@ BfTokenNode* BfReducer::ParseMethodParams(BfAstNode* node, SizedArrayImpl<BfPara
|
|||
(token == BfToken_Out) || (token == BfToken_Ref) || (token == BfToken_Mut) ||
|
||||
(token == BfToken_Delegate) || (token == BfToken_Function) ||
|
||||
(token == BfToken_Params) || (token == BfToken_LParen) ||
|
||||
(token == BfToken_Var) || (token == BfToken_LBracket)))
|
||||
(token == BfToken_Var) || (token == BfToken_LBracket) ||
|
||||
(token == BfToken_DotDotDot)))
|
||||
{
|
||||
// These get picked up below
|
||||
}
|
||||
|
@ -8453,7 +8462,8 @@ BfTokenNode* BfReducer::ParseMethodParams(BfAstNode* node, SizedArrayImpl<BfPara
|
|||
{
|
||||
BfToken token = tokenNode->GetToken();
|
||||
if ((token == BfToken_Var) || (token == BfToken_LParen) ||
|
||||
(token == BfToken_Delegate) || (token == BfToken_Function))
|
||||
(token == BfToken_Delegate) || (token == BfToken_Function) ||
|
||||
(token == BfToken_DotDotDot))
|
||||
{
|
||||
mVisitorPos.MoveNext();
|
||||
typeRef = CreateTypeRef(tokenNode);
|
||||
|
@ -8517,6 +8527,9 @@ BfTokenNode* BfReducer::ParseMethodParams(BfAstNode* node, SizedArrayImpl<BfPara
|
|||
MEMBER_SET(paramDecl, mModToken, modTokenNode);
|
||||
}
|
||||
|
||||
if ((tokenNode != NULL) && (tokenNode->mToken == BfToken_DotDotDot))
|
||||
continue;
|
||||
|
||||
bool allowNameFail = false;
|
||||
bool nextIsName = false;
|
||||
auto afterNameTokenNode = BfNodeDynCast<BfTokenNode>(mVisitorPos.Get(mVisitorPos.mReadPos + 2));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue