RblSb 2 years ago
parent
commit
8de25e7435

+ 44 - 0
tests/misc/projects/Issue10150/Main.hx

@@ -0,0 +1,44 @@
+#if macro
+import haxe.macro.Expr;
+#end
+
+@:forward(x)
+abstract Vec2(Vec2Data) to Vec2Data from Vec2Data {
+    public inline function new(x: Float) {
+        this = new Vec2Data(x);
+    }
+
+    @:op(a.b) macro function swizzleRead(self, name: String): ExprOf<Vec2> {
+        return macro {
+            var self = $self;
+            new Vec2(self.x);
+        }
+    }
+
+    @:op(a.b) macro function swizzleWrite(self, name: String, value: Expr): ExprOf<Vec2> {
+        return macro ({
+            var self = $self;
+            var value: Vec2 = $value;
+            self.x = value.x;
+            value;
+        }: Vec2);
+    }
+
+    @:op(a * b) @:commutative
+    static inline function mulScalar(a: Vec2, b: Float): Vec2
+        return new Vec2(a.x * b);
+}
+
+private class Vec2Data {
+    public var x: Float;
+    public inline function new(x: Float) {
+        this.x = x;
+    }
+}
+
+class Main {
+    static function main() {
+        var color = new Vec2(1.0);
+        color.xy *= 0.5;
+    }
+}

+ 2 - 0
tests/misc/projects/Issue10150/compile.hxml

@@ -0,0 +1,2 @@
+--main Main
+--interp