Fix auto template expansion of class constructor

This commit is contained in:
drmortalwombat 2024-05-22 22:44:53 +02:00
parent c0152b1ce4
commit 375307822e

View File

@ -4077,6 +4077,9 @@ Declaration* Parser::ParseDeclaration(Declaration * pdec, bool variable, bool ex
cdec->mFlags |= DTF_DEFINED | DTF_REQUEST_INLINE;
cdec->mNumVars = mLocalIndex;
if (ptempl)
PrependMemberConstructor(pthis, cdec);
}
return dec;
@ -10167,10 +10170,30 @@ void Parser::ParseTemplateDeclarationBody(Declaration * tdec, Declaration * pthi
adec->mQualIdent = Ident::Unique(buffer);
}
else
{
if (bdec && pthis && bdec == pthis->mBase && mScanner->mToken == TK_OPEN_PARENTHESIS)
{
Declaration* ctdec = ParseFunctionDeclaration(TheVoidTypeDeclaration);
adec = new Declaration(ctdec->mLocation, DT_CONST_FUNCTION);
adec->mBase = ctdec;
adec->mIdent = pthis->mBase->mIdent->PreMangle("+");
adec->mQualIdent = pthis->mBase->mScope->Mangle(adec->mIdent);
if (ConsumeTokenIf(TK_COLON))
{
while (mScanner->mToken != TK_OPEN_BRACE)
mScanner->NextToken();
}
}
else
{
adec = ParsePostfixDeclaration();
adec = ReverseDeclaration(adec, bdec);
}
}
mTemplateScope = tdec->mScope->mParent;