HaxeFoundation / HaxeFoundation/haxe
[bug] inline constructor does not work with "no assignment" if a argumend (function) called
- 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
Assessment
This issue has not been assessed yet.