Error in function "_init()" in module "modules/overrides/GObject.js"
function _makeDummyClass(obj, name, upperName, gtypeName, actual) {
let gtype = GObject.type_from_name(gtypeName);
obj['TYPE_' + upperName] = gtype;
obj[name] = function(v) { return new actual(v); };
obj[name].$gtype = gtype;
}
...
_makeDummyClass(GObject, 'Int', 'INT', 'gint', Number); // OK
...
GObject.TYPE_STRING = GObject.type_from_name('gchararray'); // OK
GObject.String = String;
String.$gtype = GObject.TYPE_STRING;
...
_makeDummyClass(GObject, 'Type', 'GTYPE', 'GType', GObject.type_from_name); // Error
...
Example:
gjs> const GObject = imports.gi.GObject;
gjs> let int = GObject.Int(5)
gjs> print (int)
5
gjs> let str = GObject.String("Hello")
gjs> print (str)
Hello
gjs> let gtype = GObject.Type("GObject")
resource:///org/gnome/gjs/modules/overrides/GObject.js:180:42 actual is not a constructor
_init/_makeDummyClass/obj[name]@resource:///org/gnome/gjs/modules/overrides/GObject.js:180:42
@typein:7:13
@<stdin>:1:34
Code for GObject.Type
should be like for GObject.String
:
GObject.TYPE_GTYPE = GObject.type_from_name('GType');
GObject.Type = function(v) { return GObject.type_from_name(v); }; // without new keyword
GObject.Type.$gtype = GObject.TYPE_GTYPE;