some fixes & stuff

This commit is contained in:
Yoshman29
2023-04-19 01:46:48 +02:00
parent ddaa4d1741
commit 2e28f863f3
3 changed files with 58 additions and 46 deletions
+45 -41
View File
@@ -222,48 +222,8 @@ class ClassExtendMacro {
{name: "IHScriptCustomBehaviour", pack: ["hscript"]}
], false, true, false);
shadowClass.name = '${cl.name}$CLASS_SUFFIX';
shadowClass.meta = [{
name: ':dox',
pos: Context.currentPos(),
params: [
{
expr: EConst(CIdent("hide")),
pos: Context.currentPos()
}
]
}];
var imports = Context.getLocalImports().copy();
var module = Context.getModule(Context.getLocalModule());
for(t in module) {
switch(t) {
case TInst(t, params):
if (t != null) {
var e = t.get();
processModule(shadowClass, e.module, e.name);
processImport(imports, e.module, e.name);
}
case TEnum(t, params):
if (t != null) {
var e = t.get();
processModule(shadowClass, e.module, e.name);
processImport(imports, e.module, e.name);
}
case TType(t, params):
if (t != null) {
var e = t.get();
processModule(shadowClass, e.module, e.name);
processImport(imports, e.module, e.name);
}
case TAbstract(t, params):
if (t != null) {
var e = t.get();
processModule(shadowClass, e.module, e.name);
processImport(imports, e.module, e.name);
}
default:
// not needed?
}
}
setupMetas(shadowClass, imports);
// var p = new Printer();
// trace(p.printTypeDefinition(shadowClass));
@@ -419,6 +379,50 @@ class ClassExtendMacro {
return fields;
}
public static function setupMetas(shadowClass:TypeDefinition, imports) {
shadowClass.meta = [{
name: ':dox',
pos: Context.currentPos(),
params: [
{
expr: EConst(CIdent("hide")),
pos: Context.currentPos()
}
]
}];
var module = Context.getModule(Context.getLocalModule());
for(t in module) {
switch(t) {
case TInst(t, params):
if (t != null) {
var e = t.get();
processModule(shadowClass, e.module, e.name);
processImport(imports, e.module, e.name);
}
case TEnum(t, params):
if (t != null) {
var e = t.get();
processModule(shadowClass, e.module, e.name);
processImport(imports, e.module, e.name);
}
case TType(t, params):
if (t != null) {
var e = t.get();
processModule(shadowClass, e.module, e.name);
processImport(imports, e.module, e.name);
}
case TAbstract(t, params):
if (t != null) {
var e = t.get();
processModule(shadowClass, e.module, e.name);
processImport(imports, e.module, e.name);
}
default:
// not needed?
}
}
}
public static function processModule(shadowClass:TypeDefinition, module:String, n:String) {
if (n.endsWith("_Impl_"))
n = n.substr(0, n.length - 6);
+6 -2
View File
@@ -461,6 +461,10 @@ class Interp {
return null;
var splitClassName = [for (e in c.split(".")) e.trim()];
var realClassName = splitClassName.join(".");
var claVarName = splitClassName[splitClassName.length - 1];
if (variables.exists(claVarName)) // class is already imported
return null;
if (importBlocklist.contains(realClassName))
return null;
@@ -488,9 +492,9 @@ class Interp {
}
}
}
variables.set(splitClassName[splitClassName.length - 1], enumThingy);
variables.set(claVarName, enumThingy);
} else {
variables.set(splitClassName[splitClassName.length - 1], cl);
variables.set(claVarName, cl);
}
}
+7 -3
View File
@@ -34,8 +34,9 @@ class UsingHandler {
var metas = cl.meta.get();
var shadowClass = macro class {
};
shadowClass.kind = TDClass();
shadowClass.params = switch(cl.params.length) {
case 0:
null;
@@ -52,6 +53,9 @@ class UsingHandler {
};
shadowClass.name = '${cl.name.substr(0, cl.name.length - 6)}_HSC';
var imports = Context.getLocalImports().copy();
ClassExtendMacro.setupMetas(shadowClass, imports);
for(f in fields)
switch(f.kind) {
case FFun(fun):
@@ -85,13 +89,13 @@ class UsingHandler {
doc: f.doc,
access: [APublic, AStatic]
}
shadowClass.fields.push(field);
}
default:
}
Context.defineModule(cl.module, [shadowClass], Context.getLocalImports());
Context.defineModule(cl.module + "_HSC", [shadowClass], imports);
}
return fields;