git.fiddlerwoaroof.com
Browse code

feat(errors): improve error messaging

Edward authored on 30/12/2021 10:55:24
Showing 1 changed files
... ...
@@ -1,11 +1,20 @@
1
-export function NoNextMethodError() {}
2
-NoNextMethodError.prototype = Object.create(Error);
3
-
4
-export function NoApplicableMethodError() {}
5
-NoApplicableMethodError.prototype = Object.create(Error);
1
+function SubTypeError(name) {
2
+  const cls = function () {
3
+    const instance = Error(...arguments);
4
+    Object.setPrototypeOf(instance, Object.getPrototypeOf(this));
5
+    Object.defineProperty(instance, "name", {
6
+      value: name,
7
+      writable: false,
8
+    });
9
+    return instance;
10
+  };
11
+  cls.prototype = Object.create(Error);
12
+  return cls;
13
+}
6 14
 
7
-export function NoPrimaryMethodError() {}
8
-NoPrimaryMethodError.prototype = Object.create(NoApplicableMethodError);
15
+export const NoNextMethodError = SubTypeError("NoNextMethodError");
16
+export const NoApplicableMethodError = SubTypeError("NoApplicableMethodError");
17
+export const NoPrimaryMethodError = SubTypeError("NoPrimaryMethodError");
9 18
 
10 19
 const before_qualifier = Symbol.for("before");
11 20
 const after_qualifier = Symbol.for("after");