Procházet zdrojové kódy

Add test for xredefined

k před 2 roky
rodič
revize
e158085e5b

+ 26 - 0
tests/server/src/cases/ServerTests.hx

@@ -249,6 +249,32 @@ class ServerTests extends TestCase {
 	}
 	#end
 
+	function testXRedefinedFromX_2() {
+		vfs.putContent("Main.hx", getTemplate("issues/Issue8368/Main2.hx"));
+		var transform = Marker.extractMarkers(getTemplate("issues/Issue8368/MyMacro2.macro.hx"));
+		var args = ["-main", "Main", "--macro", "define('whatever')"];
+
+		vfs.putContent(
+			"MyMacro.macro.hx",
+			transform.source.substr(0, transform.markers[1])
+			+ transform.source.substr(transform.markers[2], transform.source.length)
+		);
+
+		runHaxe(args);
+		runHaxeJson([], ServerMethods.Invalidate, {file: new FsPath("MyMacro.macro.hx")});
+
+		var completionRequest = {file: new FsPath("MyMacro.macro.hx"), contents: transform.source, offset: transform.markers[2], wasAutoTriggered: false};
+		runHaxeJson(args, DisplayMethods.Completion, completionRequest);
+		Assert.isTrue(parseCompletion().result.items.length == 23);
+		runHaxeJson(args, DisplayMethods.Completion, completionRequest);
+		Assert.isTrue(parseCompletion().result.items.length == 23);
+		runHaxeJson(args, DisplayMethods.Completion, completionRequest);
+		Assert.isTrue(parseCompletion().result.items.length == 23);
+
+		runHaxe(args);
+		assertSuccess();
+	}
+
 	function testMacroStaticsReset() {
 		vfs.putContent("Main.hx", getTemplate("issues/Issue8631/Main.hx"));
 		vfs.putContent("Init.hx", getTemplate("issues/Issue8631/Init.hx"));

+ 11 - 0
tests/server/test/templates/issues/Issue8368/Main2.hx

@@ -0,0 +1,11 @@
+class Main {
+	public static function main() {
+		buildSimplest();
+	}
+
+	macro static function buildSimplest() {
+		var cb = new MyMacro(null);
+		cb.build();
+		return macro {}
+	}
+}

+ 16 - 0
tests/server/test/templates/issues/Issue8368/MyMacro2.macro.hx

@@ -0,0 +1,16 @@
+class MyMacro {
+    var data:FunctionData;
+
+    public function new(data:FunctionData) {
+        this.data = data;
+    }
+
+    public function build():Void {
+        {-1-}data.args.{-2-}
+    }
+
+}
+
+@:structInit class FunctionData {
+	public final args:Array<String>;
+}