Sfoglia il codice sorgente

[display] don't show private types in toplevel display (closes #6434)

Simon Krajewski 8 anni fa
parent
commit
f93fb8b1df

+ 3 - 1
src/display/display.ml

@@ -904,7 +904,9 @@ module ToplevelCollector = struct
 				if not (List.mem pack !packages) then packages := pack :: !packages
 		in
 
-		explore_class_paths ctx class_paths false add_package (fun _ -> ()) add_type;
+		let maybe_add_type mt = if not (t_infos mt).mt_private then add_type mt in
+
+		explore_class_paths ctx class_paths false add_package (fun _ -> ()) maybe_add_type;
 
 		List.iter (fun pack ->
 			add (ITPackage pack)

+ 20 - 0
tests/display/src/cases/Issue6434.hx

@@ -0,0 +1,20 @@
+package cases;
+
+class Issue6434 extends DisplayTestCase {
+	/**
+	import misc.ModuleWithPrivateType;
+
+	class Main {
+		static function main() {
+			{-1-}
+		}
+	}
+	**/
+	function test() {
+		var toplevel = toplevel(pos(1));
+		eq(true, Toplevel.hasToplevel(toplevel, "type", "PublicClass"));
+		// This doesn't really test what I want to test, but I don't know how
+		// to test what I want to test...
+		eq(false, Toplevel.hasToplevel(toplevel, "type", "PrivateClass"));
+	}
+}

+ 4 - 0
tests/display/src/misc/ModuleWithPrivateType.hx

@@ -0,0 +1,4 @@
+package misc;
+
+class PublicClass { }
+private class PrivateClass { }