Forráskód Böngészése

[typer] avoid infinite recursion when checking heritance

closes 10245
Simon Krajewski 3 éve
szülő
commit
8bce1a1b60

+ 1 - 0
src/typing/typeloadModule.ml

@@ -664,6 +664,7 @@ let init_module_type ctx context_init (decl,p) =
 		) d.d_meta;
 		let prev_build_count = ref (!build_count - 1) in
 		let build() =
+			c.cl_build <- (fun()-> Building [c]);
 			let fl = TypeloadCheck.Inheritance.set_heritance ctx c herits p in
 			let rec build() =
 				c.cl_build <- (fun()-> Building [c]);

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

@@ -0,0 +1,2 @@
+@:generic
+class Foo<T> extends Foo<T> {}

+ 8 - 0
tests/misc/projects/Issue10245/compile-fail.hxml

@@ -0,0 +1,8 @@
+--main Main
+--interp
+--macro addGlobalMetadata("", "@meta0", false)
+--macro addGlobalMetadata("", "@meta1", true)
+--macro addGlobalMetadata("Main", "@meta2", false)
+--macro addGlobalMetadata("Main", "@meta3", true)
+--macro addGlobalMetadata("Main.MainSub", "@meta4", false)
+--macro addGlobalMetadata("Main.MainSub", "@meta5", true)

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

@@ -0,0 +1 @@
+Main.hx:2: characters 22-28 : Recursive class