Outside variables now in classes (no more import in class)

This commit is contained in:
NeeEoo
2023-04-10 03:36:50 +02:00
parent fab6d7e662
commit 1d67946f3f
2 changed files with 27 additions and 6 deletions
+24 -3
View File
@@ -22,14 +22,35 @@ class CustomClassHandler implements IHScriptCustomConstructor {
interp.errorHandler = ogInterp.errorHandler;
var cl = extend == null ? TemplateClass : Type.resolveClass('${extend}_HSX');
var _class = Type.createInstance(cl, args);
var __capturedLocals = ogInterp.duplicate(ogInterp.locals);
var capturedLocals:Map<String, {r:Dynamic, depth:Int}> = [];
for(k=>e in __capturedLocals)
if (e != null && e.depth <= 0)
capturedLocals.set(k, e);
//trace("Locals");
for (key => value in capturedLocals) {
if(Reflect.getProperty(_class, key) == null) {
interp.locals.set(key, {r: value, depth: -1});
//trace(key, value);
}
}
//trace("Variables");
for (key => value in ogInterp.variables) {
if(Reflect.getProperty(_class, key) == null) {
interp.variables.set(key, value);
//trace(key, value);
}
}
for(expr in fields) {
@:privateAccess
interp.exprReturn(expr);
}
var cl = extend == null ? TemplateClass : Type.resolveClass('${extend}_HSX');
var _class = Type.createInstance(cl, args);
interp.variables.set("super", staticHandler);
_class.__interp = interp;
+3 -3
View File
@@ -57,7 +57,7 @@ class Interp {
public var publicVariables:Map<String, Dynamic>;
public var staticVariables:Map<String, Dynamic>;
var locals:Map<String, {r:Dynamic, depth:Int}>;
public var locals:Map<String, {r:Dynamic, depth:Int}>;
var binops:Map<String, Expr->Expr->Dynamic>;
#else
public var customClasses:Hash<Dynamic>;
@@ -65,7 +65,7 @@ class Interp {
public var publicVariables:Hash<Dynamic>;
public var staticVariables:Hash<Dynamic>;
var locals:Hash<{r:Dynamic, depth:Int}>;
public var locals:Hash<{r:Dynamic, depth:Int}>;
var binops:Hash<Expr->Expr->Dynamic>;
#end
@@ -379,7 +379,7 @@ class Interp {
return null;
}
function duplicate<T>(h:#if haxe3 Map<String, T> #else Hash<T> #end) {
public function duplicate<T>(h:#if haxe3 Map<String, T> #else Hash<T> #end) {
#if haxe3
var h2 = new Map();
#else