HaxeFoundation / hxcpp

Runtime files for c++ backend for haxe
Other
297 stars 189 forks source link

@:generic ignores @:unreflective #1102

Open acarioni opened 6 months ago

acarioni commented 6 months ago

When a Haxe class is annotated with both @:generic and @:unreflective, the corresponding C++ class still retains the reflection machinery.

For example, compiling the following code with these annotations generates a class named MyClass_Int.cpp, which contains declarations such as HX_DEFINE_DYNAMIC_FUNC0(MyClass_Int_obj, get, return).

I am using Haxe 4.3.4 (but Haxe 4.3.3 exhibits the same behaviour).

@:generic
@:unreflective
class MyClass<T> {
  var _v: T;
  public function new(v: T) _v = v;
  public function get() return _v;
}

class Main {
  static function main() {
    trace(new MyClass(1).get());
  }
}
Simn commented 6 months ago

Fixed by the linked commit, but I don't know how to test this robustly.

acarioni commented 6 months ago

Thanks. I'll try the nightly build.

acarioni commented 6 months ago

The patch seems to work.

acarioni commented 6 months ago

Is it possible to backport the patch on branch 4.3.x?

Simn commented 6 months ago

Yeah @kLabz