Compare commits

...
Author SHA1 Message Date
FrakitsandGitHub 48ec0f4b01 Update haxelib.json 2025-08-15 13:42:15 +03:00
Ne_Eo 49c90e6434 Fix typo 2025-01-19 20:09:38 +01:00
Ne_Eo bb46d45d56 Import Redirects 2024-11-15 15:25:04 +01:00
Redar13andGitHub 3a5c4f2164 Fix ending in with #end in the file (#5)
* Update Parser.hx

* Update Parser.hx
2024-11-06 16:39:09 +01:00
Ne_Eo f18c7a2210 Small optimization 2024-08-02 23:50:16 +02:00
Ne_Eo 123a7de64a Fix Trigraph bug 2024-07-26 04:24:37 +02:00
Ne_Eo e0e1436930 Fix bug oops :3 2024-06-03 19:00:40 +02:00
5 changed files with 51 additions and 11 deletions
+2
View File
@@ -1,2 +1,4 @@
/hscript.swf
/release.zip
tests/bin/*
+1 -1
View File
@@ -1,5 +1,5 @@
{
"name": "hscript",
"name": "hscript-improved",
"url": "https://github.com/HaxeFoundation/hscript",
"license": "MIT",
"description": "Haxe Script is a scripting engine for a subset of the Haxe language",
+20 -1
View File
@@ -183,7 +183,7 @@ class Interp {
assignOp("<<=", function(v1, v2) return v1 << v2);
assignOp(">>=", function(v1, v2) return v1 >> v2);
assignOp(">>>=", function(v1, v2) return v1 >>> v2);
assignOp("??=", function(v1, v2) return v1 == null ? v2 : v1);
assignOp("??" + "=", function(v1, v2) return v1 == null ? v2 : v1);
}
function checkIsType(e1,e2): Bool {
@@ -473,6 +473,21 @@ class Interp {
return v;
}
public static var importRedirects:Map<String, String> = new Map();
public static function getImportRedirect(className:String):String {
return importRedirects.exists(className) ? importRedirects.get(className) : className;
}
public var localImportRedirects:Map<String, String> = new Map();
public function getLocalImportRedirect(className:String):String {
var className = className;
if (importRedirects.exists(className))
className = importRedirects.get(className);
if (localImportRedirects.exists(className))
className = localImportRedirects.get(className);
return className;
}
public function expr(e:Expr):Dynamic {
#if hscriptPos
curExpr = e;
@@ -503,6 +518,8 @@ class Interp {
if (variables.exists(toSetName)) // class is already imported
return null;
var realClassName = getLocalImportRedirect(realClassName);
if (importBlocklist.contains(realClassName))
return null;
var cl = Type.resolveClass(realClassName);
@@ -519,6 +536,8 @@ class Interp {
splitClassName.splice(-2, 1); // Remove the last last item
realClassName = splitClassName.join(".");
var realClassName = getLocalImportRedirect(realClassName);
if (importBlocklist.contains(realClassName))
return null;
+15 -7
View File
@@ -60,10 +60,10 @@ class Parser {
/**
allows to check for #if / #else in code
**/
public var preprocesorValues : Map<String,Dynamic> = new Map();
public var preprocessorValues : Map<String,Dynamic> = new Map();
/**
activate JSON compatiblity
activate JSON compatibility
**/
public var allowJSON : Bool;
@@ -126,7 +126,7 @@ class Parser {
["..."],
["&&"],
["||"],
["=","+=","-=","*=","/=","%=","<<=",">>=",">>>=","|=","&=","^=","=>","??="],
["=","+=","-=","*=","/=","%=","<<=",">>=",">>>=","|=","&=","^=","=>","??" + "="],
["->", "??"],
["is"]
];
@@ -1815,7 +1815,7 @@ class Parser {
case '?'.code:
var orp = readPos;
if (readChar() == '='.code)
return TOp("??=");
return TOp("??" + "=");
this.readPos = orp;
return TOp("??");
@@ -2003,9 +2003,14 @@ class Parser {
var pos = readPos;
while( true ) {
var tk = token();
// TODO: Fix ending in with #end in the file
if( tk == TEof )
error(EInvalidPreprocessor("Unclosed"), pos, pos);
if( tk == TEof ) {
if (preprocStack.length != 0) {
error(EInvalidPreprocessor("Unclosed"), pos, pos);
} else {
break;
}
}
if( preprocStack[spos] != obj ) {
push(tk);
break;
@@ -2089,4 +2094,7 @@ class Parser {
}
}
@:noCompletion public var preprocesorValues(get,set) : Map<String,Dynamic>;
inline function get_preprocesorValues() return this.preprocessorValues;
inline function set_preprocesorValues(v) return this.preprocessorValues = v;
}
+13 -2
View File
@@ -144,12 +144,16 @@ class ClassExtendMacro {
//trace(getModuleName(cl));
var hasNew = false;
for(_field in [fields.copy(), superFields.copy()])
for(f in _field) {
if (f == null)
continue;
if (f.name == "new")
if (f.name == "new") {
hasNew = true;
continue;
}
if (f.name.startsWith(FUNC_PREFIX))
continue;
if (f.access.contains(ADynamic) || f.access.contains(AStatic) || f.access.contains(AExtern) || f.access.contains(AInline))
@@ -253,6 +257,13 @@ class ClassExtendMacro {
}
}
var totalFields = definedFields.length;
if(totalFields == 0 && !hasNew) {
//Sys.println(cl.pack.join(".") + "." + cl.name + ", " + totalFields);
return fields;
}
shadowClass.kind = TDClass({
pack: cl.pack.copy(),
name: cl.name
@@ -341,7 +352,7 @@ class ClassExtendMacro {
this.__interp.variables.set(name, val);
return val;
}
return super.hset(this, name);
return super.hset(name, val);
}
} else {
macro {