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

Support for 'decltype(val).MemberName' expressions

This commit is contained in:
Brian Fiete 2020-09-19 10:02:51 -07:00
parent adb0bc4b85
commit 7f9e0c4f5b
2 changed files with 16 additions and 3 deletions

View file

@ -2182,6 +2182,14 @@ BfExpression* BfReducer::CreateExpression(BfAstNode* node, CreateExprFlags creat
} }
} }
} }
else if (tokenNode->GetToken() == BfToken_Decltype)
{
auto typeRef = CreateTypeRef(tokenNode, CreateTypeRefFlags_EarlyExit);
if (typeRef != NULL)
{
exprLeft = CreateMemberReferenceExpression(typeRef);
}
}
if (exprLeft == NULL) if (exprLeft == NULL)
{ {
@ -4685,6 +4693,9 @@ BfTypeReference* BfReducer::DoCreateTypeRef(BfAstNode* firstNode, CreateTypeRefF
isHandled = true; isHandled = true;
firstNode = delegateTypeRef; firstNode = delegateTypeRef;
if ((createTypeRefFlags & CreateTypeRefFlags_EarlyExit) != 0)
return delegateTypeRef;
} }
else if (token == BfToken_Decltype) else if (token == BfToken_Decltype)
{ {
@ -4701,7 +4712,8 @@ BfTypeReference* BfReducer::DoCreateTypeRef(BfAstNode* firstNode, CreateTypeRefF
isHandled = true; isHandled = true;
firstNode = declTypeRef; firstNode = declTypeRef;
//return declTypeRef; if ((createTypeRefFlags & CreateTypeRefFlags_EarlyExit) != 0)
return declTypeRef;
} }
else if (token == BfToken_LParen) else if (token == BfToken_LParen)
{ {

View file

@ -46,7 +46,8 @@ public:
CreateTypeRefFlags_None, CreateTypeRefFlags_None,
CreateTypeRefFlags_NoParseArrayBrackets = 1, CreateTypeRefFlags_NoParseArrayBrackets = 1,
CreateTypeRefFlags_SafeGenericParse = 2, CreateTypeRefFlags_SafeGenericParse = 2,
CreateTypeRefFlags_AllowSingleMemberTuple = 4 CreateTypeRefFlags_AllowSingleMemberTuple = 4,
CreateTypeRefFlags_EarlyExit = 8
}; };
struct BfVisitorPos struct BfVisitorPos