Compare commits
11
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
24abfa436e | ||
|
|
92e458876e | ||
|
|
44d8b1e0e1 | ||
|
|
ff649efadf | ||
|
|
4625529be7 | ||
|
|
b9da833bb5 | ||
|
|
0c08f64274 | ||
|
|
3add08e0ee | ||
|
|
77fae88890 | ||
|
|
2a301ea591 | ||
|
|
634d819cc2 |
@@ -21,9 +21,4 @@ class Config {
|
|||||||
public static final DISALLOW_ABSTRACT_AND_ENUM = [
|
public static final DISALLOW_ABSTRACT_AND_ENUM = [
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
@:unreflective
|
|
||||||
public static final IMPORT_BLACKLIST:Array<String> = [
|
|
||||||
// "flixel.FlxG"
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
+8
-8
@@ -166,10 +166,10 @@ class Interp {
|
|||||||
public var allowStaticVariables:Bool = false;
|
public var allowStaticVariables:Bool = false;
|
||||||
public var allowPublicVariables:Bool = false;
|
public var allowPublicVariables:Bool = false;
|
||||||
|
|
||||||
public var importBlocklist(get, never):Array<String>;
|
// TODO: move this to an external class
|
||||||
private inline function get_importBlocklist():Array<String> {
|
public var importBlocklist:Array<String> = [
|
||||||
return Config.IMPORT_BLACKLIST;
|
// "flixel.FlxG"
|
||||||
}
|
];
|
||||||
|
|
||||||
var usingHandler:UsingHandler;
|
var usingHandler:UsingHandler;
|
||||||
|
|
||||||
@@ -643,7 +643,7 @@ class Interp {
|
|||||||
case VPublic: getProperty(publicVariables.get(id), id, allowProperty);
|
case VPublic: getProperty(publicVariables.get(id), id, allowProperty);
|
||||||
case VStatic: getProperty(staticVariables.get(id), id, allowProperty);
|
case VStatic: getProperty(staticVariables.get(id), id, allowProperty);
|
||||||
case VScriptObject: isBypassAccessor ? UnsafeReflect.field(scriptObject, id) : UnsafeReflect.getProperty(scriptObject, id);
|
case VScriptObject: isBypassAccessor ? UnsafeReflect.field(scriptObject, id) : UnsafeReflect.getProperty(scriptObject, id);
|
||||||
case VScriptObjectGetter: UnsafeReflect.callFieldUnsafe(scriptObject, 'get_$id', []);
|
case VScriptObjectGetter: UnsafeReflect.getProperty(scriptObject, 'get_$id')();
|
||||||
case VCustomClass: (cast scriptObject:IHScriptCustomAccessBehaviour).hget(id);
|
case VCustomClass: (cast scriptObject:IHScriptCustomAccessBehaviour).hget(id);
|
||||||
case VCustomClassBypass:
|
case VCustomClassBypass:
|
||||||
var obj:IHScriptCustomAccessBehaviour = cast scriptObject;
|
var obj:IHScriptCustomAccessBehaviour = cast scriptObject;
|
||||||
@@ -722,8 +722,7 @@ class Interp {
|
|||||||
return UnsafeReflect.getProperty(scriptObject, id);
|
return UnsafeReflect.getProperty(scriptObject, id);
|
||||||
}
|
}
|
||||||
} else if (__instanceFields.contains('get_$id')) { // getter
|
} else if (__instanceFields.contains('get_$id')) { // getter
|
||||||
varLocationCache.set(id, VScriptObjectGetter);
|
return UnsafeReflect.getProperty(scriptObject, 'get_$id')();
|
||||||
return UnsafeReflect.callFieldUnsafe(scriptObject, 'get_$id', []);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -818,6 +817,7 @@ class Interp {
|
|||||||
|
|
||||||
function importResolve(__clsName:String):Null<Dynamic> {
|
function importResolve(__clsName:String):Null<Dynamic> {
|
||||||
var _realClassName = getLocalImportRedirect(__clsName);
|
var _realClassName = getLocalImportRedirect(__clsName);
|
||||||
|
if(importBlocklist.contains(_realClassName)) return null;
|
||||||
|
|
||||||
var _cl = Type.resolveClass(_realClassName);
|
var _cl = Type.resolveClass(_realClassName);
|
||||||
if(_cl == null) _cl = Type.resolveClass('${_realClassName}_HSC');
|
if(_cl == null) _cl = Type.resolveClass('${_realClassName}_HSC');
|
||||||
@@ -1134,7 +1134,7 @@ class Interp {
|
|||||||
}
|
}
|
||||||
return fcall(obj, f, args);
|
return fcall(obj, f, args);
|
||||||
default:
|
default:
|
||||||
return call(hasScriptObject ? scriptObject : null, expr(e), args);
|
return call(null, expr(e), args);
|
||||||
}
|
}
|
||||||
case EIf(econd, e1, e2):
|
case EIf(econd, e1, e2):
|
||||||
return if (expr(econd) == true) expr(e1) else if (e2 == null) null else expr(e2);
|
return if (expr(econd) == true) expr(e1) else if (e2 == null) null else expr(e2);
|
||||||
|
|||||||
+3
-2
@@ -135,7 +135,7 @@ class Property {
|
|||||||
var fName:String = setterFunc;
|
var fName:String = setterFunc;
|
||||||
if (!__allowWriteAccess && __allowSetGet) {
|
if (!__allowWriteAccess && __allowSetGet) {
|
||||||
if (varExists(fName))
|
if (varExists(fName))
|
||||||
return callAccessor(fName, true, val);
|
return callAccessor(fName, val);
|
||||||
else
|
else
|
||||||
interp.error(ECustom('Method $fName required by property $name is missing'));
|
interp.error(ECustom('Method $fName required by property $name is missing'));
|
||||||
} else {
|
} else {
|
||||||
@@ -153,9 +153,10 @@ class Property {
|
|||||||
return r = val;
|
return r = val;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function callAccessor(f:String, isWrite:Bool = false, ?value:Dynamic):Dynamic {
|
private function callAccessor(f:String, ?value:Dynamic):Dynamic {
|
||||||
var fn = isStatic ? interp.staticVariables.get(f) : interp.variables.get(f);
|
var fn = isStatic ? interp.staticVariables.get(f) : interp.variables.get(f);
|
||||||
var rt:Dynamic = null;
|
var rt:Dynamic = null;
|
||||||
|
var isWrite:Bool = value != null;
|
||||||
if (fn != null && Reflect.isFunction(fn)) {
|
if (fn != null && Reflect.isFunction(fn)) {
|
||||||
if (isWrite) __allowWriteAccess = true;
|
if (isWrite) __allowWriteAccess = true;
|
||||||
else __allowReadAccess = true;
|
else __allowReadAccess = true;
|
||||||
|
|||||||
@@ -483,9 +483,8 @@ class ClassExtendMacro {
|
|||||||
if (__interp != null) {
|
if (__interp != null) {
|
||||||
if(__class__fields.contains(name)) {
|
if(__class__fields.contains(name)) {
|
||||||
var v:Dynamic = __interp.variables.get(name);
|
var v:Dynamic = __interp.variables.get(name);
|
||||||
var ba:Bool = @:privateAccess __interp.isBypassAccessor;
|
|
||||||
if(v != null && v is hscript.Property)
|
if(v != null && v is hscript.Property)
|
||||||
return cast(v, hscript.Property).get(ba);
|
return cast(v, hscript.Property).callGetter(name);
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
else @:privateAccess {
|
else @:privateAccess {
|
||||||
@@ -537,9 +536,8 @@ class ClassExtendMacro {
|
|||||||
if (__interp != null) {
|
if (__interp != null) {
|
||||||
if(__class__fields.contains(name)) {
|
if(__class__fields.contains(name)) {
|
||||||
var v:Dynamic = __interp.variables.get(name);
|
var v:Dynamic = __interp.variables.get(name);
|
||||||
var ba:Bool = @:privateAccess __interp.isBypassAccessor;
|
|
||||||
if(v != null && v is hscript.Property)
|
if(v != null && v is hscript.Property)
|
||||||
return cast(v, hscript.Property).set(val, ba);
|
return cast(v, hscript.Property).callSetter(name, val);
|
||||||
__interp.variables.set(name, val);
|
__interp.variables.set(name, val);
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user