HaxeFoundation / haxe

Haxe - The Cross-Platform Toolkit
https://haxe.org
6.14k stars 656 forks source link

[php] return type declarations #11758

Open PaulPatat opened 4 weeks ago

PaulPatat commented 4 weeks ago

If I have this extern for a CakePHP class

package cake.orm;

import php.NativeArray;

@:native("Cake\\ORM\\Table")
extern class Table {
        function initialize(config:NativeArray):Void;
}

And this subclass

package app.model.table;

import cake.orm.Table;

class CookiesTable extends Table
{
        override function initialize(config):Void
        {
        }

}

Then this php is emitted


namespace app\model\table;
.....
       /**
         * @param array $config
         *
         * @return void
         */
        public function initialize ($config) {

But initialize() has a return type declaration from CakePHP 4 onward so this doesn't work too well:


class Table {
    public function initialize(array $config): void

It would be nice if extern methods could be annotated as having a return type so the compiler would emit overrides with the correct type.