HaxeFoundation / HaxeFoundation/haxe

[bug] inline constructor does not work with "no assignment" if a argumend (function) called

Open
#8,315 0 comments 0 reactions 0 assignees View on GitHub
enhancement feature-inline
Dominant language
Haxe
Stars
6.9k
Forks
715
Avg merge
2d 2h
Merged PRs (30d)
11

Description

Inline constructors are not inlined if the function only have one expression and if it not assign to any variable and if it calls a function.

```haxe
class ConstructorTest {
public inline function new(str:String, call:String -> Void) {
call(str);
}
}

class Test {
static function main() {
new ConstructorTest('test', function(str) {
trace(str);
});
}
}
```

generates:

```js
// Generated by Haxe 4.0.0-rc.2+5d8177a
(function ($global) { "use strict";
var ConstructorTest = function(str,call) {
call(str);
};
var Test = function() { };
Test.main = function() {
new ConstructorTest("test",function(str) {
console.log("root/program/Test.hx:10:",str);
});
};
Test.main();
})({});
```

very strange:

```haxe
class ConstructorTest {
public inline function new(str:String, call:String -> Void) {
call(str);
}
}

class Test {
static function main() {
new ConstructorTest('test', function(str) {
trace(str);
});
new ConstructorTest('test2', function(str) {
trace(str);
});
}
}
```

generates:

```js
// Generated by Haxe 4.0.0-rc.2+5d8177a
(function ($global) { "use strict";
var ConstructorTest = function(str,call) {
call(str);
};
var Test = function() { };
Test.main = function() {
console.log("root/program/Test.hx:10:","test");
new ConstructorTest("test2",function(str) {
console.log("root/program/Test.hx:13:",str);
});
};
Test.main();
})({});
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.