natural import & static access from vars for YCE

This commit is contained in:
Yoshman29
2022-06-29 00:53:51 +02:00
parent 841261f199
commit 0601b8def6
2 changed files with 23 additions and 17 deletions
+23 -14
View File
@@ -25,7 +25,8 @@
* - Added Error handler
*/
package hscript;
import haxe.PosInfos;
import haxe.display.Protocol.InitializeResult;
import haxe.PosInfos;
import hscript.Expr;
import haxe.Constraints.IMap;
@@ -700,26 +701,34 @@
cast(map, haxe.Constraints.IMap<Dynamic, Dynamic>).set(key, value);
}
public var getRedirects:Map<String, Dynamic->String->Dynamic> = [];
public var setRedirects:Map<String, Dynamic->String->Dynamic->Dynamic> = [];
function get( o : Dynamic, f : String ) : Dynamic {
if ( o == null ) error(EInvalidAccess(f));
return {
#if php
// https://github.com/HaxeFoundation/haxe/issues/4915
try {
Reflect.getProperty(o, f);
} catch (e:Dynamic) {
Reflect.field(o, f);
}
#else
Reflect.getProperty(o, f);
#end
var redirect:Dynamic->String->Dynamic = null;
var cl:String;
if (getRedirects.exists(cl = Type.getClassName(Type.getClass(o))) && (redirect = getRedirects[cl]) != null) {
return redirect(o, f);
} else {
var v = null;
if ((v = Reflect.getProperty(o, f)) == null) v = Reflect.getProperty(Type.getClass(o), f);
return v;
}
}
}
function set( o : Dynamic, f : String, v : Dynamic ) : Dynamic {
if( o == null ) error(EInvalidAccess(f));
Reflect.setProperty(o,f,v);
return v;
if( o == null ) error(EInvalidAccess(f));
var redirect:Dynamic->String->Dynamic->Dynamic = null;
var cl:String;
if (setRedirects.exists(cl = Type.getClassName(Type.getClass(o))) && (redirect = setRedirects[cl]) != null)
return redirect(o, f, v);
Reflect.setProperty(o,f,v);
return v;
}
function fcall( o : Dynamic, f : String, args : Array<Dynamic> ) : Dynamic {
-3
View File
@@ -661,7 +661,6 @@ class Parser {
var tk = token();
switch( tk ) {
case TPOpen:
trace("using base thing shit");
var tok = token();
switch(tok) {
case TConst(c):
@@ -692,8 +691,6 @@ class Parser {
switch( t ) {
case TId(id):
path.push(id);
// case TOp("*"):
// star = true;
default:
unexpected(t);
}