Fixed: check against local function variables.
This commit is contained in:
parent
2f6058d49f
commit
fbb0430325
2 changed files with 15 additions and 0 deletions
|
@ -97,6 +97,13 @@ namespace arookas {
|
||||||
}
|
}
|
||||||
sunVariableSymbol DeclareVariable(sunIdentifier node, sunSymbolModifiers modifiers) {
|
sunVariableSymbol DeclareVariable(sunIdentifier node, sunSymbolModifiers modifiers) {
|
||||||
var local = (modifiers & sunSymbolModifiers.Local) != 0;
|
var local = (modifiers & sunSymbolModifiers.Local) != 0;
|
||||||
|
#if SSC_SCOPES
|
||||||
|
if (local && Scopes.Top.Type == sunScopeType.Function) {
|
||||||
|
#else
|
||||||
|
if (local && Scopes.Count > 1) {
|
||||||
|
#endif
|
||||||
|
throw new sunLocalFunctionVariableException(node);
|
||||||
|
}
|
||||||
var name = MangleSymbolName(node.Value, node.Location.ScriptId, false, local);
|
var name = MangleSymbolName(node.Value, node.Location.ScriptId, false, local);
|
||||||
var symbol = Scopes.DeclareVariable(name);
|
var symbol = Scopes.DeclareVariable(name);
|
||||||
if (symbol == null) {
|
if (symbol == null) {
|
||||||
|
|
|
@ -267,4 +267,12 @@ namespace arookas {
|
||||||
public sunConstantDeclarationException(sunVariableDeclaration node)
|
public sunConstantDeclarationException(sunVariableDeclaration node)
|
||||||
: base(node) { }
|
: base(node) { }
|
||||||
}
|
}
|
||||||
|
class sunLocalFunctionVariableException : sunNodeException<sunNode> {
|
||||||
|
public override string Message {
|
||||||
|
get { return "Only script-scope variables can be declared local."; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public sunLocalFunctionVariableException(sunNode node)
|
||||||
|
: base(node) { }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue