Skip to content

Commit a88593c

Browse files
committed
oops
1 parent 88e6893 commit a88593c

File tree

5 files changed

+35
-35
lines changed

5 files changed

+35
-35
lines changed

docs/context.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@
2222
2323
- `types` - Stores all previously `defined` types.
2424
25-
- `variables` - **Public** & **Static** variables, each entry in this array is added using the meta `@:contextValue('public')`, or the keyword `public`.
25+
- `publicVariables` - **Public** variables, each entry in this array is added using the meta `@:contextValue('public')`, or the keyword `public`.
26+
27+
- `staticVariables` - **Static** variables, each entry in this array is added using the meta `@:contextValue('static')`, or the keyword `static`.
2628
2729
---
2830

rulescript/Context.hx

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ package rulescript;
33
import rulescript.types.ScriptedAbstract;
44
import rulescript.types.ScriptedType;
55
import rulescript.scriptedClass.RuleScriptedClass.ScriptedClass;
6-
import rulescript.types.context.EVariableModifiers;
76
import rulescript.types.context.EVariableDeclarations;
7+
import rulescript.types.context.TContextVariable;
88

99
/**
1010
* The Context stores types to preserve repeated imports,
@@ -14,10 +14,9 @@ import rulescript.types.context.EVariableDeclarations;
1414
*/
1515
class Context {
1616
public var types:Map<String, Dynamic> = [];
17-
public var variables:Map<String, ContextVariable> = [];
18-
19-
@:deprecated public var publicVariables(default, never):Map<String, Dynamic> = [];
20-
@:deprecated public var staticVariables(default, never):Map<String, Dynamic> = [];
17+
18+
public var publicVariables:Map<String, TContextVariable> = new Map<String, TContextVariable>();
19+
public var staticVariables:Map<String, TContextVariable> = new Map<String, TContextVariable>();
2120

2221
public function new() {}
2322

@@ -28,7 +27,8 @@ class Context {
2827
}
2928

3029
public function resetVariables():Void {
31-
variables = []; // yuhuh -orbl
30+
staticVariables = []; // yuhuh -orbl
31+
publicVariables = [];
3232
}
3333

3434
public function resolveType(path:String):Dynamic {
@@ -49,6 +49,4 @@ class Context {
4949
return types[path] = t;
5050
};
5151
}
52-
}
53-
54-
typedef ContextVariable = {modifier:EVariableModifiers, declaration:EVariableDeclarations, value:Dynamic, ?parent:String};
52+
}

rulescript/interps/RuleScriptInterp.hx

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ import rulescript.types.ScriptedEnum;
1111
import rulescript.types.ScriptedType;
1212
import rulescript.types.ScriptedTypeUtil;
1313
import rulescript.types.ScriptedTypedef;
14-
import rulescript.types.context.EVariableModifiers;
1514
import rulescript.types.context.EVariableDeclarations;
15+
import rulescript.types.context.TContextVariable;
1616

1717
using rulescript.Tools;
1818

@@ -98,8 +98,12 @@ class RuleScriptInterp extends hscript.Interp implements IInterp
9898
v = get(superInstance, id);
9999

100100
// SHARED VARIABLES
101-
if (v == null && context != null && context.variables.exists(id))
102-
v = context.variables.get(id).value;
101+
if (v == null && context != null) {
102+
if (context.publicVariables.exists(id))
103+
v = context.publicVariables.get(id).value;
104+
else if (context.staticVariables.exists(id))
105+
v = context.staticVariables.get(id).value;
106+
}
103107

104108
if (v == null)
105109
error(EUnknownVariable(id)); // fixes - orbl
@@ -143,19 +147,18 @@ class RuleScriptInterp extends hscript.Interp implements IInterp
143147
}
144148
return v;
145149
}
146-
147-
override function setVar(name:String, v:Dynamic)
148-
{
150+
override function setVar(name:String, v:Dynamic) {
149151
if (superInstance != null && (superFields.contains(name) || superFields.contains('set_' + name)))
150152
Reflect.setProperty(superInstance, name, v);
151-
else if (context != null && context.variables.exists(name)) {
152-
final cv:rulescript.Context.ContextVariable = context.variables.get(name);
153-
if (cv.declaration == FINAL && cv.parent != scriptName)
153+
else if (context != null && (context.staticVariables.exists(name) || context.publicVariables.exists(name))) {
154+
final vg:Map<String, TContextVariable> = context.staticVariables.exists(name) ? context.staticVariables : context.publicVariables;
155+
final cv:TContextVariable = vg.get(name);
156+
if (cv.declaration == FINAL && cv.parent != scriptName) {
154157
error(ECustom('$name: Unable to override final variable defined by another script.'));
155-
else context.variables.set(name, {modifier: cv.modifier, declaration:cv.declaration, value: v, parent: scriptName});
156-
}
157-
else
158-
{
158+
} else {
159+
vg.set(name, {declaration: cv.declaration, value: v, parent: scriptName});
160+
}
161+
} else {
159162
var lastValue = variables.get(name);
160163

161164
if (lastValue is Property)
@@ -241,7 +244,7 @@ class RuleScriptInterp extends hscript.Interp implements IInterp
241244

242245
if ((!locals.exists(id) && !variables.exists(id))
243246
&& (!superFields.contains(id) && !superFields.contains('get_$id'))
244-
&& (context == null || !context.variables.exists(id)))
247+
&& (context == null || !context.publicVariables.exists(id) || context.staticVariables.exists(id)))
245248
{
246249
final typePath:String = path.join('.');
247250

@@ -292,20 +295,20 @@ class RuleScriptInterp extends hscript.Interp implements IInterp
292295

293296
if (isFunction && depth == 0)
294297
{
295-
return context.variables[n] = {
298+
(isStatic ? context.staticVariables : context.publicVariables)[n] = {
296299
value: this.expr(e),
297300
declaration: isFinal ? EVariableDeclarations.FINAL : EVariableDeclarations.VAR,
298-
modifier: isStatic ? EVariableModifiers.STATIC : EVariableModifiers.PUBLIC,
299301
parent: scriptName
300302
};
303+
304+
return (isStatic ? context.staticVariables : context.publicVariables)[n];
301305
}
302306
else if (depth == 0)
303307
{
304308
this.expr(e);
305-
context.variables.set(n, {
309+
(isStatic ? context.staticVariables : context.publicVariables).set(n, {
306310
value: resolve(n),
307311
declaration: isFinal ? EVariableDeclarations.FINAL : EVariableDeclarations.VAR,
308-
modifier: isStatic ? EVariableModifiers.STATIC : EVariableModifiers.PUBLIC,
309312
parent: scriptName
310313
});
311314
}
@@ -322,7 +325,7 @@ class RuleScriptInterp extends hscript.Interp implements IInterp
322325
case EVar(n, _, e, global, _):
323326
if (global)
324327
{
325-
if (context == null || !context.variables.exists(n))
328+
if (context == null || (!context.staticVariables.exists(n) || !context.publicVariables.exists(n)))
326329
variables.set(n, (e == null) ? null : this.expr(e));
327330
}
328331
else

rulescript/types/context/EVariableModifiers.hx

Lines changed: 0 additions & 6 deletions
This file was deleted.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package rulescript.types.context;
2+
3+
typedef TContextVariable = {declaration:EVariableDeclarations, value:Dynamic, ?parent:String};

0 commit comments

Comments
 (0)