mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-10 20:42:21 +02:00
Support for 'decltype(val).MemberName' expressions
This commit is contained in:
parent
adb0bc4b85
commit
7f9e0c4f5b
2 changed files with 16 additions and 3 deletions
|
@ -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)
|
||||
{
|
||||
|
@ -4685,6 +4693,9 @@ BfTypeReference* BfReducer::DoCreateTypeRef(BfAstNode* firstNode, CreateTypeRefF
|
|||
|
||||
isHandled = true;
|
||||
firstNode = delegateTypeRef;
|
||||
|
||||
if ((createTypeRefFlags & CreateTypeRefFlags_EarlyExit) != 0)
|
||||
return delegateTypeRef;
|
||||
}
|
||||
else if (token == BfToken_Decltype)
|
||||
{
|
||||
|
@ -4701,7 +4712,8 @@ BfTypeReference* BfReducer::DoCreateTypeRef(BfAstNode* firstNode, CreateTypeRefF
|
|||
isHandled = true;
|
||||
firstNode = declTypeRef;
|
||||
|
||||
//return declTypeRef;
|
||||
if ((createTypeRefFlags & CreateTypeRefFlags_EarlyExit) != 0)
|
||||
return declTypeRef;
|
||||
}
|
||||
else if (token == BfToken_LParen)
|
||||
{
|
||||
|
@ -4770,7 +4782,7 @@ BfTypeReference* BfReducer::DoCreateTypeRef(BfAstNode* firstNode, CreateTypeRefF
|
|||
{
|
||||
Fail("Expected type", firstNode);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -46,7 +46,8 @@ public:
|
|||
CreateTypeRefFlags_None,
|
||||
CreateTypeRefFlags_NoParseArrayBrackets = 1,
|
||||
CreateTypeRefFlags_SafeGenericParse = 2,
|
||||
CreateTypeRefFlags_AllowSingleMemberTuple = 4
|
||||
CreateTypeRefFlags_AllowSingleMemberTuple = 4,
|
||||
CreateTypeRefFlags_EarlyExit = 8
|
||||
};
|
||||
|
||||
struct BfVisitorPos
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue