diff --git a/src/compiler/compiler.ml b/src/compiler/compiler.ml index 4b09d7d5a7f..dac3c67c602 100644 --- a/src/compiler/compiler.ml +++ b/src/compiler/compiler.ml @@ -310,7 +310,10 @@ let do_type ctx mctx actx display_file_dot_path = com.callbacks#run com.error_ext com.callbacks#get_after_init_macros; run_or_diagnose ctx (fun () -> if com.display.dms_kind <> DMNone then DisplayTexpr.check_display_file tctx cs; - List.iter (fun cpath -> ignore(tctx.Typecore.g.Typecore.do_load_module tctx cpath null_pos)) (List.rev actx.classes); + List.iter (fun cpath -> + ignore(tctx.Typecore.g.Typecore.do_load_module tctx cpath null_pos); + Typecore.flush_pass tctx.g PBuildClass "actx.classes" + ) (List.rev actx.classes); Finalization.finalize tctx; ); end with TypeloadParse.DisplayInMacroBlock -> diff --git a/tests/misc/projects/Issue11004/build.hxml.stdout b/tests/misc/projects/Issue11004/build.hxml.stdout index 800b6c23fee..399b8e53256 100644 --- a/tests/misc/projects/Issue11004/build.hxml.stdout +++ b/tests/misc/projects/Issue11004/build.hxml.stdout @@ -1 +1 @@ -Bar.hx:27: @:storedTypedExpr 3 computed this_ident as: foo.bar \ No newline at end of file +Bar.hx:27: @:storedTypedExpr 1 computed this_ident as: foo.bar diff --git a/tests/misc/projects/Issue11740/Baz.hx b/tests/misc/projects/Issue11740/Baz.hx new file mode 100644 index 00000000000..bf370233bc4 --- /dev/null +++ b/tests/misc/projects/Issue11740/Baz.hx @@ -0,0 +1,6 @@ +import foo.Foo; + +class Baz { + function baz(data:foo.FooData) {} +} + diff --git a/tests/misc/projects/Issue11740/Macro.macro.hx b/tests/misc/projects/Issue11740/Macro.macro.hx new file mode 100644 index 00000000000..803e9371469 --- /dev/null +++ b/tests/misc/projects/Issue11740/Macro.macro.hx @@ -0,0 +1,17 @@ +import haxe.macro.Context; + +class Macro { + public static function build() { + trace("build FooData"); + + Context.defineType({ + pos : Context.currentPos(), + name : "FooData", + pack : ["foo"], + kind : TDClass(), + fields : [], + }); + + return null; + } +} diff --git a/tests/misc/projects/Issue11740/Main.hx b/tests/misc/projects/Issue11740/Main.hx new file mode 100644 index 00000000000..63590c32ad4 --- /dev/null +++ b/tests/misc/projects/Issue11740/Main.hx @@ -0,0 +1,5 @@ +import foo.Foo; + +function main() { + trace(Baz); +} diff --git a/tests/misc/projects/Issue11740/Main2.hx b/tests/misc/projects/Issue11740/Main2.hx new file mode 100644 index 00000000000..d8b7d830fd3 --- /dev/null +++ b/tests/misc/projects/Issue11740/Main2.hx @@ -0,0 +1,3 @@ +function main() {} + +typedef X = Baz diff --git a/tests/misc/projects/Issue11740/compile1.hxml b/tests/misc/projects/Issue11740/compile1.hxml new file mode 100644 index 00000000000..7d61297e2cb --- /dev/null +++ b/tests/misc/projects/Issue11740/compile1.hxml @@ -0,0 +1,2 @@ +-main Main +--interp diff --git a/tests/misc/projects/Issue11740/compile1.hxml.stdout b/tests/misc/projects/Issue11740/compile1.hxml.stdout new file mode 100644 index 00000000000..513fc838c7d --- /dev/null +++ b/tests/misc/projects/Issue11740/compile1.hxml.stdout @@ -0,0 +1,2 @@ +Macro.macro.hx:5: build FooData +Main.hx:4: Class diff --git a/tests/misc/projects/Issue11740/compile2.hxml b/tests/misc/projects/Issue11740/compile2.hxml new file mode 100644 index 00000000000..660cee52f25 --- /dev/null +++ b/tests/misc/projects/Issue11740/compile2.hxml @@ -0,0 +1,3 @@ +-main Main +Baz +--interp diff --git a/tests/misc/projects/Issue11740/compile2.hxml.stdout b/tests/misc/projects/Issue11740/compile2.hxml.stdout new file mode 100644 index 00000000000..513fc838c7d --- /dev/null +++ b/tests/misc/projects/Issue11740/compile2.hxml.stdout @@ -0,0 +1,2 @@ +Macro.macro.hx:5: build FooData +Main.hx:4: Class diff --git a/tests/misc/projects/Issue11740/compile3.hxml b/tests/misc/projects/Issue11740/compile3.hxml new file mode 100644 index 00000000000..e0934b3797b --- /dev/null +++ b/tests/misc/projects/Issue11740/compile3.hxml @@ -0,0 +1,2 @@ +-main Main2 +--interp diff --git a/tests/misc/projects/Issue11740/compile3.hxml.stdout b/tests/misc/projects/Issue11740/compile3.hxml.stdout new file mode 100644 index 00000000000..2fbb93664ae --- /dev/null +++ b/tests/misc/projects/Issue11740/compile3.hxml.stdout @@ -0,0 +1 @@ +Macro.macro.hx:5: build FooData diff --git a/tests/misc/projects/Issue11740/foo/Foo.hx b/tests/misc/projects/Issue11740/foo/Foo.hx new file mode 100644 index 00000000000..4dc77078eb7 --- /dev/null +++ b/tests/misc/projects/Issue11740/foo/Foo.hx @@ -0,0 +1,4 @@ +package foo; + +@:build(Macro.build()) +class Foo {}