@@ -6,6 +6,7 @@ import haxe.macro.TypeTools;
66import haxe .macro .ComplexTypeTools ;
77import haxe .macro .Context ;
88import haxe .macro .Expr .Field ;
9+ import haxe .macro .Expr ;
910
1011using StringTools ;
1112#end
@@ -31,6 +32,7 @@ class NavigationMacros {
3132 BackendMacros .additionalExprs .push (macro haxe.ui.navigation. NavigationManager .instance .subDomain = $v {navigationSubDomain });
3233 }
3334
35+ var routeExpr : Expr = null ;
3436 if (routeDetailsMeta != null ) {
3537 var routePathExpr = routeDetailsMeta .params [0 ];
3638 var initialRoute = localMeta .has (" :initialRoute" ) || localMeta .has (" initialRoute" );
@@ -40,21 +42,23 @@ class NavigationMacros {
4042 if (routePathExpr != null ) {
4143 var parts = localClass .toString ().split (" ." );
4244 parts .push (" new" );
43- BackendMacros . additionalExprs . push ( macro haxe.ui.navigation. NavigationManager .instance .registerRoute ($routePathExpr , {
45+ routeExpr = macro haxe.ui.navigation. NavigationManager .instance .registerRoute ($routePathExpr , {
4446 viewCtor : $p {parts },
4547 initial : $v {initialRoute },
4648 error : $v {errorRoute },
4749 preserveView : $v {preserveView }
48- })) ;
50+ });
4951 }
5052 }
5153
5254 var applyParamsField = null ;
55+ var initField = null ;
5356 var fields = Context .getBuildFields ();
5457 for (f in fields ) {
5558 if (f .name == " applyParams" ) {
5659 applyParamsField = f ;
57- break ;
60+ } else if (f .name == " __init__" ) {
61+ initField = f ;
5862 }
5963 }
6064
@@ -72,6 +76,20 @@ class NavigationMacros {
7276 }
7377
7478
79+ if (initField == null && routeExpr != null ) {
80+ fields .push ({
81+ name : " __init__" ,
82+ access : [AStatic ],
83+ kind : FFun ({
84+ args : [],
85+ expr : macro {
86+ ${routeExpr }
87+ }
88+ }),
89+ pos : Context .currentPos ()
90+ });
91+ }
92+
7593 return fields ;
7694 }
7795
0 commit comments