Ticket #2457
I can't call super.trap() in Javascript and I'm not sure why. Calling it raised the Err:
super.trap()
sys::Type.toFanType: Not a Fantom type: sys::Obj
This simple test shows where the code fails:
@Js class TestTrap : Test { Void testTrap() { this->toStr } override Obj? trap(Str name, Obj?[]? args := null) { retVal := super.trap(name, args) // --> Err here // ... do other stuff return retVal } }
The stacktrace:
fan.sys.Type.toFanType (sys.js:8834) fan.sys.ObjUtil.trap (sys.js:12779) fan.acme.TestTrap.trap (acme.js:999)
toFanType() looks like this:
toFanType()
fan.sys.Type.toFanType = function(obj) { if (obj == null) throw fan.sys.Err.make("sys::Type.toFanType: obj is null"); if (obj.$fanType != undefined) return obj.$fanType; if ((typeof obj) == "boolean" || obj instanceof Boolean) return fan.sys.Bool.$type; if ((typeof obj) == "number" || obj instanceof Number) return fan.sys.Int.$type; if ((typeof obj) == "string" || obj instanceof String) return fan.sys.Str.$type; throw fan.sys.Err.make("sys::Type.toFanType: Not a Fantom type: " + obj); }
And ObjUtil.trap():
ObjUtil.trap()
fan.sys.ObjUtil.trap = function(obj, name, args) { if (obj instanceof fan.sys.Obj) return obj.trap(name, args); else return fan.sys.ObjUtil.doTrap(obj, name, args, fan.sys.Type.toFanType(obj)); }
Any ideas?
Ticket promoted to #2457 and assigned to andy
@Steve - I think I might have fixed this - could you check against tip?
Yep, that test case seems to work now.
Ticket resolved in 1.0.70
Great - thanks!
Login or Signup to reply.
SlimerDude Wed 9 Sep 2015
I can't call
super.trap()
in Javascript and I'm not sure why. Calling it raised the Err:This simple test shows where the code fails:
The stacktrace:
toFanType()
looks like this:And
ObjUtil.trap()
:Any ideas?
andy Wed 9 Sep 2015
Ticket promoted to #2457 and assigned to andy
andy Thu 8 Jun 2017
@Steve - I think I might have fixed this - could you check against tip?
SlimerDude Mon 12 Jun 2017
Yep, that test case seems to work now.
andy Mon 12 Jun 2017
Ticket resolved in 1.0.70
Great - thanks!