HaxeFoundation / HaxeFoundation/haxe

recursive generic functions generates invalid code.

Open
#3,523 2 comments 0 reactions 1 assignee Claimed by @Simn View on GitHub
Dominant language
Haxe
Stars
6.9k
Forks
715
Avg merge
2d 2h
Merged PRs (30d)
11

Description

``` haxe
class Main
{
static function main()
{
for_loop(4,
function (x) return x < 10,
function (x) return x + 1,
function (x) trace("int " + x));

for_loop(4.0,
function (x) return x < 10.0,
function (x) return x + 1.0,
function (x) trace("float " + x));

for_loop("",
function (x) return x.length < 10,
function (x) return x + "-",
function (x) trace("string " + x));
}

@:generic static function for_loop(v:T, condition:T->Bool, next:T->T, block:T->Void)
{
if (condition(v))
{
block(v);
for_loop(next(v), condition, next, block);
}
}
}
```

```
haxe -D js_es5 -D analyzer -js main.js -main Main
```

``` js
(function () { "use strict";
var Main = function() { };
Main.for_loop_String = function(v,condition,next,block) {
if(condition(v)) {
block(v);
Main.for_loop_for_loop_T(next(v),condition,next,block);
}
};
Main.for_loop_Float = function(v,condition,next,block) {
if(condition(v)) {
block(v);
Main.for_loop_for_loop_T(next(v),condition,next,block);
}
};
Main.for_loop_Int = function(v,condition,next,block) {
if(condition(v)) {
block(v);
Main.for_loop_for_loop_T(next(v),condition,next,block);
}
};
Main.main = function() {
Main.for_loop_Int(4,function(x) {
return x < 10;
},function(x1) {
return x1 + 1;
},function(x2) {
console.log("int " + x2);
});
Main.for_loop_Float(4.0,function(x3) {
return x3 < 10.0;
},function(x4) {
return x4 + 1.0;
},function(x5) {
console.log("float " + x5);
});
Main.for_loop_String("",function(x6) {
return x6.length < 10;
},function(x7) {
return x7 + "-";
},function(x8) {
console.log("string " + x8);
});
};
Main.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.