Procházet zdrojové kódy

LibJS: Make AggregateError inherit from Error

This is our way of implementing the [[ErrorData]] internal slot, which
is being used in Object.prototype.toString().
Linus Groh před 4 roky
rodič
revize
c503a28e19

+ 2 - 2
Userland/Libraries/LibJS/Runtime/AggregateError.cpp

@@ -5,7 +5,7 @@
  */
 
 #include <LibJS/Runtime/AggregateError.h>
-#include <LibJS/Runtime/Array.h>
+#include <LibJS/Runtime/Error.h>
 #include <LibJS/Runtime/GlobalObject.h>
 
 namespace JS {
@@ -16,7 +16,7 @@ AggregateError* AggregateError::create(GlobalObject& global_object)
 }
 
 AggregateError::AggregateError(Object& prototype)
-    : Object(prototype)
+    : Error(prototype)
 {
 }
 

+ 3 - 2
Userland/Libraries/LibJS/Runtime/AggregateError.h

@@ -6,12 +6,13 @@
 
 #pragma once
 
+#include <LibJS/Runtime/Error.h>
 #include <LibJS/Runtime/Object.h>
 
 namespace JS {
 
-class AggregateError : public Object {
-    JS_OBJECT(AggregateError, Object);
+class AggregateError : public Error {
+    JS_OBJECT(AggregateError, Error);
 
 public:
     static AggregateError* create(GlobalObject&);

+ 2 - 0
Userland/Libraries/LibJS/Tests/builtins/Object/Object.prototype.toString.js

@@ -10,6 +10,8 @@ test("result for various object types", () => {
     expect(oToString([])).toBe("[object Array]");
     expect(oToString(function () {})).toBe("[object Function]");
     expect(oToString(new Error())).toBe("[object Error]");
+    expect(oToString(new TypeError())).toBe("[object Error]");
+    expect(oToString(new AggregateError([]))).toBe("[object Error]");
     expect(oToString(new Boolean())).toBe("[object Boolean]");
     expect(oToString(new Number())).toBe("[object Number]");
     expect(oToString(new Date())).toBe("[object Date]");