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:
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)
|
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)
|
||||||
{
|
{
|
||||||
|
@ -4770,7 +4782,7 @@ BfTypeReference* BfReducer::DoCreateTypeRef(BfAstNode* firstNode, CreateTypeRefF
|
||||||
{
|
{
|
||||||
Fail("Expected type", firstNode);
|
Fail("Expected type", firstNode);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue