HaxeFoundation / HaxeFoundation/haxe

Inconsistent behaviour across targets with/without dce for simple abstract class example

Open
#12,801 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
Haxe
Stars
6.9k
Forks
715
Avg merge
2d 2h
Merged PRs (30d)
11

Description

https://try.haxe.org/#f60F1e9F
```hx
class Test {
static function main() {
var bar = new Bar();
bar.setMode();
trace("Haxe is great!");
}
}

class Bar extends Foo {
public function new() {}

public function setMode(mode:Mode = Isolated) {
trace(mode);
}
}

abstract class Foo {
abstract public function setMode(mode:Mode = Isolated):Void;
}

enum abstract Mode(String) {
var Isolated;
}
```
The above example seems to be inconsistent across platforms, and even across dce modes. But locally(hxcpp) I get:
**hxcpp**:
> 37 | abstract public function setMarginMode(mode:MarginMode = Isolated):Response;
> | ^^^^^^^^
> | Invalid constant : Isolated

If you do it on the builder with dce set to `no`
- Hashlink: It will silently fail on hashlink
- Eval: Claim there's multiple main's
- Neko: Compile
- Js: Compile

Worked during haxe 4 (currently on: `5.0.0-preview.1+f5087fe`

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.