private void ParseObjectPropertyDefinition(out Expression expr, out string propName)
{
var exprPos = _token.Position;
if (_token.ID == TokenId.Identifier)
{
propName = GetIdentifier();
var token = _token;
var pos = _textPos;
var ch = _ch;
NextToken();
if (_token.ID != TokenId.Colon)
{
_token = token;
_textPos = pos;
_ch = ch;
}
else
{
NextToken();
expr = ParseExpression();
return;
}
}
expr = ParseExpression();
if (TokenIdentifierIs("as"))
{
NextToken();
propName = GetIdentifier();
NextToken();
return;
}
var maybePropName = GetPropertyName(expr, exprPos);
propName = maybePropName
.GetOrThrow(() => ParseError(exprPos, Res.MissingAsClause));
}