js: Throw GObject.NotImplementedError when requiring overriding

Since version 1.50.0, gjs defines GObject.NotImplementedError for throwing
errors when a "virtual" method that requires a subclass implementation is not
defined.

So use this instead of a generic JS Error in such cases.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/549
This commit is contained in:
Marco Trevisan (Treviño) 2019-05-21 15:28:07 -05:00
parent 4730b7a094
commit 88697add1b
5 changed files with 8 additions and 7 deletions

View File

@ -124,7 +124,7 @@ var Batch = class extends Task {
} }
process() { process() {
throw new Error('Not implemented'); throw new GObject.NotImplementedError(`process in ${this.constructor.name}`);
} }
runTask() { runTask() {

View File

@ -79,7 +79,7 @@ class BaseIcon extends St.Bin {
// This can be overridden by a subclass, or by the createIcon // This can be overridden by a subclass, or by the createIcon
// parameter to _init() // parameter to _init()
createIcon(size) { createIcon(size) {
throw new Error('no implementation of createIcon in ' + this); throw new GObject.NotImplementedError(`createIcon in ${this.constructor.name}`);
} }
setIconSize(size) { setIconSize(size) {
@ -416,7 +416,8 @@ var IconGrid = GObject.registerClass({
animatePulse(animationDirection) { animatePulse(animationDirection) {
if (animationDirection != AnimationDirection.IN) if (animationDirection != AnimationDirection.IN)
throw new Error("Pulse animation only implements 'in' animation direction"); throw new GObject.NotImplementedError("Pulse animation only implements " +
"'in' animation direction");
this._cancelAnimation(); this._cancelAnimation();

View File

@ -122,7 +122,7 @@ var SlidingControl = class {
} }
_getSlide() { _getSlide() {
throw new Error('getSlide() must be overridden'); throw new GObject.NotImplementedError(`_getSlide in ${this.constructor.name}`);
} }
_updateSlide() { _updateSlide() {

View File

@ -162,7 +162,7 @@ var SwitcherPopup = GObject.registerClass({
} }
_keyPressHandler(keysym, action) { _keyPressHandler(keysym, action) {
throw new Error('Not implemented'); throw new GObject.NotImplementedError(`_keyPressHandler in ${this.constructor.name}`);
} }
_keyPressEvent(actor, event) { _keyPressEvent(actor, event) {

View File

@ -835,7 +835,7 @@ var LayoutStrategy = class {
// (optionally) for each row in @layout.rows. This method is // (optionally) for each row in @layout.rows. This method is
// intended to be called by subclasses. // intended to be called by subclasses.
_computeRowSizes(layout) { _computeRowSizes(layout) {
throw new Error('_computeRowSizes not implemented'); throw new GObject.NotImplementedError(`_computeRowSizes in ${this.constructor.name}`);
} }
// Compute strategy-specific window slots for each window in // Compute strategy-specific window slots for each window in
@ -848,7 +848,7 @@ var LayoutStrategy = class {
// * gridHeight - The totial height used by the grid, unscaled, unspaced. // * gridHeight - The totial height used by the grid, unscaled, unspaced.
// * rows - A list of rows, which should be instantiated by _newRow. // * rows - A list of rows, which should be instantiated by _newRow.
computeLayout(windows, layout) { computeLayout(windows, layout) {
throw new Error('computeLayout not implemented'); throw new GObject.NotImplementedError(`computeLayout in ${this.constructor.name}`);
} }
// Given @layout, compute the overall scale and space of the layout. // Given @layout, compute the overall scale and space of the layout.