diff --git a/hscript/CustomClassHandler.hx b/hscript/CustomClassHandler.hx index be64955..f628f45 100644 --- a/hscript/CustomClassHandler.hx +++ b/hscript/CustomClassHandler.hx @@ -50,12 +50,12 @@ class CustomClassHandler implements IHScriptCustomConstructor implements IHScrip __interp.staticVariables = ogInterp.staticVariables; __interp.customClasses = ogInterp.customClasses; - var validField:Bool = false; - var staticField:Bool = false; - var fieldName:String = ""; - for(ex in fields) { - switch (Tools.expr(ex)) { - case EVar(n, _, _, _, isStatic, _, _, _, _, _, _): + for(e in fields.copy()) { + var validField:Bool = false; + var staticField:Bool = false; + var fieldName:String = ""; + switch (Tools.expr(e)) { + case EVar(n, _, _, _, isStatic): validField = true; staticField = isStatic; fieldName = n; @@ -64,15 +64,13 @@ class CustomClassHandler implements IHScriptCustomConstructor implements IHScrip staticField = isStatic; fieldName = n; default: - validField = false; - staticField = false; - fieldName = ""; } if(staticField && validField) { - __interp.exprReturn(ex); + trace(fieldName); + __interp.expr(e); __staticFields.push(fieldName); - fields.remove(ex); + fields.remove(e); } } } diff --git a/hscript/Printer.hx b/hscript/Printer.hx index 8e464c2..a2d2a2d 100644 --- a/hscript/Printer.hx +++ b/hscript/Printer.hx @@ -141,8 +141,35 @@ class Printer { } case EIdent(v): add(v); - case EVar(n, t, e): // TODO: static, public, override - add("var " + n); + case EVar(n, t, e, p, s, pr, isFinal, isInline, get, set, _): + if(p) add("public "); + else if(pr) add("private "); + if(s) add("static "); + if(isInline) add("inline "); + if(isFinal) add("final " + n); + else add("var " + n); + + if(get != null || set != null) { + add("("); + switch(get) { + case ADefault: add("default, "); + case ANull: add("null, "); + case AGet: add("get, "); + case ADynamic: add("dynamic, "); + case ANever: add("never, "); + default: + } + switch(set) { + case ADefault: add("default"); + case ANull: add("null"); + case ASet: add("set"); + case ADynamic: add("dynamic"); + case ANever: add("never"); + default: + } + add(")"); + } + addType(t); if( e != null ) { add(" = ");