Disallow magic variables in inline assembly

This commit is contained in:
Alex Beregszaszi 2016-10-07 23:59:30 +01:00
parent 3bcf0909af
commit 9616470f67
2 changed files with 7 additions and 0 deletions

View File

@ -12,6 +12,9 @@ Bugfixes:
* Code Generator: expect zero stack increase after `super` as an expression
* Inline assembly: support the `address` opcode
* Inline assembly: fix parsing of assignment after a label.
* Inline assembly: external variables of unsupported type (such as `this`, `super`, etc.)
are properly detected. They are not available in inline assembly and can be used as
local variable names.
### 0.4.2 (2016-09-17)

View File

@ -592,6 +592,10 @@ bool TypeChecker::visit(InlineAssembly const& _inlineAssembly)
unsigned pushes = 0;
if (dynamic_cast<FunctionDefinition const*>(declaration))
pushes = 1;
else if (dynamic_cast<MagicVariableDeclaration const*>(declaration))
{
return false;
}
else if (auto var = dynamic_cast<VariableDeclaration const*>(declaration))
{
if (var->isConstant())