From c150b84f186f485bfea19cab74a1e8726dc7eeb3 Mon Sep 17 00:00:00 2001 From: Simon Krajewski Date: Thu, 1 Jun 2017 12:58:51 +0200 Subject: [PATCH] don't use neko.Lib.rethrow when not in neko --- src/tink/macro/ClassBuilder.hx | 116 ++++++++++++++++----------------- src/tink/macro/Types.hx | 18 ++--- 2 files changed, 67 insertions(+), 67 deletions(-) diff --git a/src/tink/macro/ClassBuilder.hx b/src/tink/macro/ClassBuilder.hx index 3d6ad11..971bcc1 100644 --- a/src/tink/macro/ClassBuilder.hx +++ b/src/tink/macro/ClassBuilder.hx @@ -9,51 +9,51 @@ using tink.MacroApi; using Lambda; class ClassBuilder { - + var memberList:Array; var macros:Map; var constructor:Null; public var target(default, null):ClassType; var superFields:Map; - + var initializeFrom:Array; - - public function new(?target, ?fields) { - if (target == null) + + public function new(?target, ?fields) { + if (target == null) target = Context.getLocalClass().get(); - + if (fields == null) fields = Context.getBuildFields(); - + this.initializeFrom = fields; this.target = target; } - + function init() { if (initializeFrom == null) return; - + var fields = initializeFrom; initializeFrom = null; - + this.memberList = []; this.macros = new Map(); - - for (field in fields) + + for (field in fields) if (field.access.has(AMacro)) macros.set(field.name, field) else if (field.name == 'new') { var m:Member = field; this.constructor = new Constructor(this, m.getFunction().sure(), m.isPublic, m.pos, field.meta); } - else + else doAddMember(field); - - + + } - + public function getConstructor(?fallback:Function):Constructor { init(); - if (constructor == null) + if (constructor == null) if (fallback != null) constructor = new Constructor(this, fallback); else { @@ -64,18 +64,18 @@ class ClassBuilder { try { var ctor = cl.constructor.get(); var func = Context.getTypedExpr(ctor.expr()).getFunction().sure(); - + for (arg in func.args) //this is to deal with type parameter substitutions arg.type = null; - + func.expr = "super".resolve().call(func.getArgIdents()); constructor = new Constructor(this, func); if (ctor.isPublic) - constructor.publish(); + constructor.publish(); } catch (e:Dynamic) {//fails for unknown reason if (e == 'assert') - neko.Lib.rethrow(e); + #if neko neko.Lib.rethrow(e) #else throw e #end; constructor = new Constructor(this, null); } break; @@ -85,15 +85,15 @@ class ClassBuilder { if (constructor == null) constructor = new Constructor(this, null); } - + return constructor; } - + public function hasConstructor():Bool { init(); return this.constructor != null; } - + public function export(?verbose):Array { if (initializeFrom != null) return null; var ret = (constructor == null || target.isInterface) ? [] : [constructor.toHaxe()]; @@ -108,24 +108,24 @@ class ClassBuilder { } for (m in macros) ret.push(m); - - if (verbose) - for (field in ret) + + if (verbose) + for (field in ret) Context.warning(new Printer().printField(field), field.pos); - - return ret; + + return ret; } public function iterator():Iterator { init(); return this.memberList.copy().iterator(); } - + public function hasOwnMember(name:String):Bool { init(); - return + return macros.exists(name) || memberByName(name).isSuccess(); } - + public function hasSuperField(name:String):Bool { if (superFields == null) { superFields = new Map(); @@ -139,51 +139,51 @@ class ClassBuilder { } return superFields.get(name); } - + public function memberByName(name:String, ?pos:Position) { init(); for (m in memberList) - if (m.name == name) + if (m.name == name) return Success(m); - + return pos.makeFailure('unknown member $name'); } - + public function removeMember(member:Member):Bool { init(); - return + return memberList.remove(member); } - - public function hasMember(name:String):Bool + + public function hasMember(name:String):Bool return hasOwnMember(name) || hasSuperField(name); function doAddMember(m:Member, ?front:Bool = false):Member { init(); - - if (m.name == 'new') + + if (m.name == 'new') throw 'Constructor must not be registered as ordinary member'; - - //if (hasOwnMember(m.name)) + + //if (hasOwnMember(m.name)) //m.pos.error('duplicate member declaration ' + m.name); - - if (front) + + if (front) memberList.unshift(m); - else - memberList.push(m); - - return m; - } - - public function addMember(m:Member, ?front:Bool = false):Member { - doAddMember(m, front); - - if (!m.isStatic && hasSuperField(m.name)) - m.overrides = true; - + else + memberList.push(m); + return m; } - + + public function addMember(m:Member, ?front:Bool = false):Member { + doAddMember(m, front); + + if (!m.isStatic && hasSuperField(m.name)) + m.overrides = true; + + return m; + } + static public function run(plugins:ArrayVoid>, ?verbose) { var builder = new ClassBuilder(); for (p in plugins) diff --git a/src/tink/macro/Types.hx b/src/tink/macro/Types.hx index 6e282c4..df098aa 100644 --- a/src/tink/macro/Types.hx +++ b/src/tink/macro/Types.hx @@ -19,10 +19,10 @@ class Types { try { Some(Context.getType(typeName)); } - catch (e:Dynamic) + catch (e:Dynamic) if (Std.string(e) == 'Type not found \'$typeName\'') None; - else neko.Lib.rethrow(e); - + else #if neko neko.Lib.rethrow(e) #else throw e #end; + static var types = new MapType>(); static var idCounter = 0; static public function getID(t:Type, ?reduced = true) @@ -49,7 +49,7 @@ class Types { throw 'not implemented'; } - static public function getMeta(type:Type) + static public function getMeta(type:Type) return switch type { case TInst(_.get().meta => m, _): [m]; case TEnum(_.get().meta => m, _): [m]; @@ -183,14 +183,14 @@ class Types { params : [TPExpr(register(f).toExpr())], sub : null, }); - + static function resolveDirectType() - return + return switch reduce(Context.getLocalType()) { - case TInst(_, [TInst(_.get() => { kind: KExpr(e) }, _)]): + case TInst(_, [TInst(_.get() => { kind: KExpr(e) }, _)]): types[e.getInt().sure()]();//When using compiler server, this call throws on occasion, in which case modifying this file (to update mtime and invalidate the cache) will solve the problem - default: + default: throw 'assert'; } - + }