-
-
Notifications
You must be signed in to change notification settings - Fork 648
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Custom js generator, dce and typedefs #9252
Labels
platform-javascript
Everything related to JS / JavaScript
Milestone
Comments
@Simn Do you know why do we have it before dce? |
I know absolutely nothing about custom JS generators. |
The js generation is actually called at a later stage than onGenerate: #if macro
import haxe.macro.Compiler;
import haxe.macro.JSGenApi;
import haxe.macro.Context;
#end
typedef Unused = UnusedConcrete;
class UnusedConcrete {}
class Main {
#if macro
static function generate(api: JSGenApi) {
trace('js generate');
for (type in api.types)
switch type {
case TInst(_.get() => {name: name}, _) | TType(_.get() => {name: name}, _):
if (name.substr(0, 2) == 'Un')
trace(name);
default:
}
}
public static function use() {
Context.onGenerate(_ -> trace('onGenerate'));
Compiler.setCustomJSGenerator(generate);
}
#end
static function main() {
trace('hello');
}
}
With dce the unused class
|
benmerckx
added a commit
to benmerckx/genes
that referenced
this issue
May 26, 2021
…don't they're indistinguishable from import x in y. We just have to wait for HaxeFoundation/haxe#9252
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
When enabling DCE, a custom js generator receives only those concrete types that need to be generated. However it also receives every typedef included in the class path (even in unused modules). I'm generating Typescript definitions - and some of these typedefs reference concrete types that are not part of the generation (making Typescript upset). So I'm looking to either have unused typedefs not pass through to the
generate
call or for a way to check during generation if a typedef is in use?$ haxe --macro Main.use() --main Main --js out.js --dce full Main.hx:13: Unused Main.hx:13: Iterator Main.hx:13: Iterable Main.hx:13: KeyValueIterator Main.hx:13: KeyValueIterable Main.hx:13: js.lib.ObjectPrototype Main.hx:13: js.lib.ObjectPropertyDescriptor
The text was updated successfully, but these errors were encountered: