elsassph / hxtsdgen

TypeScript declaration file generator for Haxe JavaScript output target
65 stars 12 forks source link

[BUG] Cannot call null #36

Open xunto opened 3 years ago

xunto commented 3 years ago

Hi, wanted to try to generate types for my lib using this library but get that not really informative error:

Uncaught exception Cannot call null
#REDACTED#/.haxelib/hxtsdgen/0,3,0/src/hxtsdgen/Selector.hx:88: characters 26-39 : Called from here
#REDACTED#/.haxelib/hxtsdgen/0,3,0/src/hxtsdgen/TypeRenderer.hx:50: characters 55-76 : Called from here
#REDACTED#/.haxelib/hxtsdgen/0,3,0/src/hxtsdgen/ArgsRenderer.hx:29: characters 39-61 : Called from here
#REDACTED#/.haxelib/hxtsdgen/0,3,0/src/hxtsdgen/CodeGen.hx:377: characters 65-91 : Called from here
#REDACTED#/.haxelib/hxtsdgen/0,3,0/src/hxtsdgen/CodeGen.hx:181: characters 35-86 : Called from here
#REDACTED#/.haxelib/hxtsdgen/0,3,0/src/hxtsdgen/CodeGen.hx:88: characters 19-40 : Called from here
#REDACTED#/.haxelib/hxtsdgen/0,3,0/src/hxtsdgen/CodeGen.hx:164: lines 164-205 : Called from here
#REDACTED#/.haxelib/hxtsdgen/0,3,0/src/hxtsdgen/CodeGen.hx:54: characters 38-72 : Called from here
#REDACTED#/.haxelib/hxtsdgen/0,3,0/src/hxtsdgen/Selector.hx:77: characters 21-48 : Called from here
#REDACTED#/.haxelib/hxtsdgen/0,3,0/src/hxtsdgen/TypeRenderer.hx:26: characters 25-46 : Called from here
#REDACTED#/.haxelib/hxtsdgen/0,3,0/src/hxtsdgen/CodeGen.hx:357: characters 71-103 : Called from here
#REDACTED#/.haxelib/hxtsdgen/0,3,0/src/hxtsdgen/CodeGen.hx:191: characters 25-75 : Called from here
#REDACTED#/.haxelib/hxtsdgen/0,3,0/src/hxtsdgen/CodeGen.hx:88: characters 19-40 : Called from here
#REDACTED#/.haxelib/hxtsdgen/0,3,0/src/hxtsdgen/CodeGen.hx:164: lines 164-205 : Called from here
#REDACTED#/.haxelib/hxtsdgen/0,3,0/src/hxtsdgen/CodeGen.hx:54: characters 38-72 : Called from here
#REDACTED#/.haxelib/hxtsdgen/0,3,0/src/hxtsdgen/Selector.hx:77: characters 21-48 : Called from here
#REDACTED#/.haxelib/hxtsdgen/0,3,0/src/hxtsdgen/TypeRenderer.hx:26: characters 25-46 : Called from here
#REDACTED#/.haxelib/hxtsdgen/0,3,0/src/hxtsdgen/CodeGen.hx:116: characters 79-104 : Called from here
#REDACTED#/.haxelib/hxtsdgen/0,3,0/src/hxtsdgen/CodeGen.hx:347: characters 28-95 : Called from here
#REDACTED#/.haxelib/hxtsdgen/0,3,0/src/hxtsdgen/CodeGen.hx:191: characters 25-75 : Called from here
#REDACTED#/.haxelib/hxtsdgen/0,3,0/src/hxtsdgen/CodeGen.hx:88: characters 19-40 : Called from here
#REDACTED#/.haxelib/hxtsdgen/0,3,0/src/hxtsdgen/CodeGen.hx:164: lines 164-205 : Called from here
#REDACTED#/.haxelib/hxtsdgen/0,3,0/src/hxtsdgen/CodeGen.hx:54: characters 38-72 : Called from here
#REDACTED#/.haxelib/hxtsdgen/0,3,0/src/hxtsdgen/Selector.hx:77: characters 21-48 : Called from here
#REDACTED#/.haxelib/hxtsdgen/0,3,0/src/hxtsdgen/TypeRenderer.hx:26: characters 25-46 : Called from here
#REDACTED#/.haxelib/hxtsdgen/0,3,0/src/hxtsdgen/CodeGen.hx:357: characters 71-103 : Called from here
#REDACTED#/.haxelib/hxtsdgen/0,3,0/src/hxtsdgen/CodeGen.hx:191: characters 25-75 : Called from here
#REDACTED#/.haxelib/hxtsdgen/0,3,0/src/hxtsdgen/CodeGen.hx:88: characters 19-40 : Called from here
#REDACTED#/.haxelib/hxtsdgen/0,3,0/src/hxtsdgen/CodeGen.hx:164: lines 164-205 : Called from here
#REDACTED#/.haxelib/hxtsdgen/0,3,0/src/hxtsdgen/CodeGen.hx:54: characters 38-72 : Called from here
#REDACTED#/.haxelib/hxtsdgen/0,3,0/src/hxtsdgen/CodeGen.hx:36: characters 9-39 : Called from here
#REDACTED#/.haxelib/hxtsdgen/0,3,0/src/hxtsdgen/Generator.hx:75: characters 28-46 : Called from here
[xunto@gunter]: ~>$  haxe --version
4.1.3
elsassph commented 3 years ago

Something is crashing when it tries resolving some types. Maybe a typedef of typedef or anon. Is the lib open source?

Otherwise you can try checking out the lib from git (you can use haxelib git for that) and modify the code in Selector.hx at line 88 and guard for ab.impl being null. Maybe trace(ab) in this case to see what type it's trying to resolve.

xunto commented 3 years ago

@elsassph Hi, thank you for your answer! I tried to do what you asked. The library is not opensource yet.

Output:

#REDACTED#/.haxelib/hxtsdgen/git/src/hxtsdgen/Selector.hx:88: {module: Class, impl: null, name: Class, isPrivate: false, from: [], unops: [], binops: [], doc: 
    An abstract type that represents a Class.

    See `Type` for the Haxe Reflection API.

    @see https://haxe.org/manual/types-class-instance.html
, params: [{name: T, t: TInst(Class.T,[])}], array: [], pos: #pos(/usr/share/haxe/std/Class.hx:30: characters 27-47), pack: [], resolveWrite: null, resolve: null, meta: {get: #fun, remove: #fun, has: #fun, extract: #fun, add: #fun}, to: [], type: TAbstract(Class,[TInst(Class.T,[])]), __t: haxe.macro.TypeDecl}

Seems to be a problem with the Class class. I use it a lot in my custom EventBus (to register to an event).