فهرست منبع

show type parameters in toplevel completion (closes #6264)

Simon Krajewski 8 سال پیش
والد
کامیت
fc4b987948
2فایلهای تغییر یافته به همراه25 افزوده شده و 0 حذف شده
  1. 6 0
      src/display/display.ml
  2. 19 0
      tests/display/src/cases/Toplevel.hx

+ 6 - 0
src/display/display.ml

@@ -912,6 +912,12 @@ module ToplevelCollector = struct
 		List.iter (fun mt ->
 			DynArray.add acc (ITType mt)
 		) !module_types;
+
+		(* type params *)
+		List.iter (fun (_,t) ->
+			DynArray.add acc (ITType (module_type_of_type t))
+		) ctx.type_params;
+
 		DynArray.to_list acc
 
 	let handle_unresolved_identifier ctx i p only_types =

+ 19 - 0
tests/display/src/cases/Toplevel.hx

@@ -144,6 +144,25 @@ class Toplevel extends DisplayTestCase {
 		eq(true, hasToplevel(typesCompletion, "package", "haxe"));
 	}
 
+	/**
+	class Main<ClassT> {
+		static var myField;
+		static function main<FieldT>() {
+			{-1-}
+		}
+
+		function field<FieldT2>() {
+			{-2-}
+		}
+	**/
+	function testTypeParameters() {
+		eq(true, hasToplevel(toplevel(pos(1)), "type", "FieldT"));
+		eq(false, hasToplevel(toplevel(pos(1)), "type", "ClassT"));
+		eq(true, hasToplevel(toplevel(pos(2)), "type", "ClassT"));
+		eq(false, hasToplevel(toplevel(pos(2)), "type", "FieldT"));
+		eq(true, hasToplevel(toplevel(pos(2)), "type", "FieldT2"));
+	}
+
 	public static function hasToplevel(a:Array<ToplevelElement>, kind:String, name:String):Bool {
 		return a.exists(function(t) return t.kind == kind && t.name == name);
 	}