Browse Source

[macro] Display failing macro for "Build failure" errors (#11635)

* [macro] add failing macro to 'Build failure' error

* [tests] add test for macro build failure source

* [tests] update tests
Rudy Ges 1 year ago
parent
commit
01e2014d0b

+ 1 - 1
src/typing/typeloadFields.ml

@@ -400,7 +400,7 @@ let build_module_def ctx mt meta fvars fbuild =
 				let r = try ctx.g.do_macro ctx MBuild cpath meth el p with e -> ctx.c.get_build_infos <- old; raise e in
 				ctx.c.get_build_infos <- old;
 				(match r with
-				| MError | MMacroInMacro -> raise_typing_error "Build failure" p
+				| MError | MMacroInMacro -> raise_typing_error (Printf.sprintf "Build failure (%s.%s)" (s_type_path cpath) meth) p
 				| MSuccess e -> fbuild e)
 			) :: f_build
 		| _ ->

+ 1 - 1
tests/misc/projects/Issue11020/compile.hxml.stderr

@@ -1 +1 @@
-[{"file":"$$normPath(::cwd::/,true)Main.hx","diagnostics":[{"kind":2,"severity":3,"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":19}},"args":"Context.info","code":null,"relatedInformation":[]},{"kind":2,"severity":2,"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":19}},"args":"Context.warning","code":"WUser","relatedInformation":[]},{"kind":2,"severity":1,"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":19}},"args":"Context.error","code":null,"relatedInformation":[]},{"kind":2,"severity":1,"range":{"start":{"line":0,"character":11},"end":{"line":0,"character":18}},"args":"Build failure","code":null,"relatedInformation":[]}]}]
+[{"file":"$$normPath(::cwd::/,true)Main.hx","diagnostics":[{"kind":2,"severity":3,"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":19}},"args":"Context.info","code":null,"relatedInformation":[]},{"kind":2,"severity":2,"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":19}},"args":"Context.warning","code":"WUser","relatedInformation":[]},{"kind":2,"severity":1,"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":19}},"args":"Context.error","code":null,"relatedInformation":[]},{"kind":2,"severity":1,"range":{"start":{"line":0,"character":11},"end":{"line":0,"character":18}},"args":"Build failure (Main.error)","code":null,"relatedInformation":[]}]}]

+ 8 - 0
tests/misc/projects/Issue11635/Macro.macro.hx

@@ -0,0 +1,8 @@
+function build() {
+	// Whoops, not returning anything
+}
+
+function build2() {
+	haxe.macro.Context.error("Abort", haxe.macro.Context.currentPos());
+	return null;
+}

+ 2 - 0
tests/misc/projects/Issue11635/Main.hx

@@ -0,0 +1,2 @@
+@:build(Macro.build())
+class Main {}

+ 2 - 0
tests/misc/projects/Issue11635/Main2.hx

@@ -0,0 +1,2 @@
+@:build(Macro.build2())
+class Main2 {}

+ 1 - 0
tests/misc/projects/Issue11635/compile-fail.hxml

@@ -0,0 +1 @@
+--main Main

+ 2 - 0
tests/misc/projects/Issue11635/compile-fail.hxml.stderr

@@ -0,0 +1,2 @@
+Macro.macro.hx:1: lines 1-3 : Void should be Array<haxe.macro.Field>
+Main.hx:1: characters 1-8 : Build failure (Macro.build)

+ 1 - 0
tests/misc/projects/Issue11635/compile2-fail.hxml

@@ -0,0 +1 @@
+--main Main2

+ 2 - 0
tests/misc/projects/Issue11635/compile2-fail.hxml.stderr

@@ -0,0 +1,2 @@
+Main2.hx:1: characters 1-8 : Abort
+Main2.hx:1: characters 1-8 : Build failure (Macro.build2)