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

[display] add server/moduleCreated

see #8451
Simon Krajewski 6 éve
szülő
commit
ea03a9ea46

+ 8 - 0
src/context/display/displayJson.ml

@@ -179,6 +179,14 @@ let handler =
 			in
 			hctx.send_result (generate_module () m)
 		);
+		"server/moduleCreated", (fun hctx ->
+			let file = hctx.jsonrpc#get_string_param "file" in
+			let file = Path.unique_full_path file in
+			hctx.com.callbacks#add_after_init_macros (fun () ->
+				ignore(TypeloadParse.parse_module_file hctx.com file null_pos);
+				hctx.send_result (jstring file);
+			);
+		);
 		"server/files", (fun hctx ->
 			let sign = Digest.from_hex (hctx.jsonrpc#get_string_param "signature") in
 			let files = CompilationServer.get_files hctx.display#get_cs in

+ 7 - 3
src/typing/typeloadParse.ml

@@ -144,9 +144,7 @@ let resolve_module_file com m remap p =
 	let timer = Timer.timer ["typing";"resolve_module_file"] in
 	Std.finally timer (resolve_module_file com m remap) p *)
 
-let parse_module' com m p =
-	let remap = ref (fst m) in
-	let file = resolve_module_file com m remap p in
+let parse_module_file com file p =
 	let handle_parser_error msg p =
 		let msg = Parser.error_msg msg in
 		match com.display.dms_error_policy with
@@ -166,6 +164,12 @@ let parse_module' com m p =
 			handle_parser_error msg p;
 			data
 	in
+	pack,decls
+
+let parse_module' com m p =
+	let remap = ref (fst m) in
+	let file = resolve_module_file com m remap p in
+	let pack,decls = parse_module_file com file p in
 	file,remap,pack,decls
 
 let parse_module ctx m p =

+ 1 - 0
std/haxe/display/Server.hx

@@ -40,6 +40,7 @@ class ServerMethods {
 	static inline var Modules = new HaxeRequestMethod<ContextParams, Response<Array<String>>>("server/modules");
 	static inline var Module = new HaxeRequestMethod<ModuleParams, Response<JsonModule>>("server/module");
 	static inline var Files = new HaxeRequestMethod<ContextParams, Response<Array<JsonServerFile>>>("server/files");
+	static inline var ModuleCreated = new HaxeRequestMethod<FileParams, NoData>("server/moduleCreated");
 }
 
 /* Configure */

+ 5 - 4
tests/server/src/Main.hx

@@ -138,16 +138,17 @@ class ServerTests extends HaxeServerTestCase {
 		vfs.putContent("HelloWorld.hx", getTemplate("HelloWorld.hx"));
 		runHaxeJson(["-cp", "."], ServerMethods.ReadClassPaths, null);
 		vfs.putContent("Empty.hx", getTemplate("Empty.hx"));
+		runHaxeJson([], ServerMethods.ModuleCreated, {file: new FsPath("Empty.hx")});
 		runHaxeJson([], DisplayMethods.Completion, {file: new FsPath("HelloWorld.hx"), offset: 75, wasAutoTriggered: false});
 		var completion = parseCompletion();
 		assertHasCompletion(completion, module -> switch (module.kind) {
 			case Type: module.args.path.typeName == "HelloWorld";
 			case _: false;
 		});
-		// assertHasCompletion(completion, module -> switch (module.kind) {
-		// 	case Type: module.args.path.typeName == "Empty";
-		// 	case _: false;
-		// });
+		assertHasCompletion(completion, module -> switch (module.kind) {
+			case Type: module.args.path.typeName == "Empty";
+			case _: false;
+		});
 	}
 }