Parse local variables sharing a name with a function as variables

This commit is contained in:
Evil Eye 2021-10-06 21:27:08 +02:00
parent cd4d76f8c5
commit 5037def3b3
2 changed files with 10 additions and 3 deletions

View file

@ -353,15 +353,21 @@ namespace Compiler
{
if (const Extensions *extensions = getContext().getExtensions())
{
char returnType; // ignored
std::string argumentType; // ignored
bool hasExplicit = false; // ignored
if (extensions->isInstruction (keyword, argumentType, hasExplicit))
bool isInstruction = extensions->isInstruction (keyword, argumentType, hasExplicit);
if(isInstruction || (mExplicit.empty() && extensions->isFunction(keyword, returnType, argumentType, hasExplicit)))
{
// pretend this is not a keyword
std::string name = loc.mLiteral;
if (name.size()>=2 && name[0]=='"' && name[name.size()-1]=='"')
name = name.substr (1, name.size()-2);
return parseName (name, loc, scanner);
if(isInstruction || mLocals.getType(Misc::StringUtils::lowerCase(name)) != ' ')
{
// pretend this is not a keyword
return parseName (name, loc, scanner);
}
}
}