From b7b12b6cbbc6b9ff2a963d09fd2bca404f856977 Mon Sep 17 00:00:00 2001 From: NeeEoo Date: Fri, 31 Mar 2023 20:16:30 +0200 Subject: [PATCH] WIP Classes --- hscript/Interp.hx | 21 ++++++++++++++++++++- hscript/Parser.hx | 1 + 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/hscript/Interp.hx b/hscript/Interp.hx index 98b1e70..cdb0386 100644 --- a/hscript/Interp.hx +++ b/hscript/Interp.hx @@ -449,6 +449,9 @@ class Interp { case EClass(name, fields, extend, interfaces): trace(fields); //trace(Printer.toString(fields)); + for(field in fields) { + trace(Printer.toString(field)); + } case EImport(c): if (!importEnabled) return null; @@ -961,9 +964,25 @@ class Interp { } function cnew(cl:String, args:Array):Dynamic { + var cl:String = cast cl; var c = Type.resolveClass(cl); - if (c == null) + if (c == null) { c = resolve(cl); + + //if ((c is TemplateClassGenerator)) { + // return Reflect.callMethod(c, c._hnew, args); + //} + } return Type.createInstance(c, args); } } + +class TemplateClass { + +} + +class TemplateClassGenerator { + function _hnew() { + + } +} \ No newline at end of file diff --git a/hscript/Parser.hx b/hscript/Parser.hx index 420b8ad..263bc26 100644 --- a/hscript/Parser.hx +++ b/hscript/Parser.hx @@ -277,6 +277,7 @@ class Parser { return switch( expr(e) ) { case EBlock(_), EObject(_), ESwitch(_): true; case EFunction(_,e,_,_,_,_): isBlock(e); + case EClass(_,e,_,_): true; case EVar(_, t, e, _,_): e != null ? isBlock(e) : t != null ? t.match(CTAnon(_)) : false; case EIf(_,e1,e2): if( e2 != null ) isBlock(e2) else isBlock(e1); case EBinop(_,_,e): isBlock(e);