|
@@ -3,6 +3,12 @@ private enum E {
|
|
|
B(?i:Int);
|
|
|
}
|
|
|
|
|
|
+@:forward
|
|
|
+private abstract Vec2({x:Float, y:Float}) from {x:Float, y:Float} {
|
|
|
+ @:commutative @:op(A * B) static inline function mul(a:Vec2, b:Float):Vec2
|
|
|
+ return {x: a.x * b, y: a.y * b};
|
|
|
+}
|
|
|
+
|
|
|
class TestAnalyzer extends TestBase {
|
|
|
|
|
|
static function main() {
|
|
@@ -676,6 +682,18 @@ class TestAnalyzer extends TestBase {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ function testIssue3869() {
|
|
|
+ var v1:Vec2 = {x: 1., y: 2.};
|
|
|
+ var r = v1 * 2;
|
|
|
+ assertEqualsConst(2., r.x);
|
|
|
+ assertEqualsConst(4., r.y);
|
|
|
+
|
|
|
+ var v2:Vec2 = {x: 1., y: 2.};
|
|
|
+ var r2 = 2 * v2;
|
|
|
+ assertEqualsConst(2., r2.x);
|
|
|
+ assertEqualsConst(4., r2.y);
|
|
|
+ }
|
|
|
+
|
|
|
function cond1() {
|
|
|
append("cond1");
|
|
|
return true;
|