From 2a7354b0a7a9874a5e634b9e62cd2fd3eb6ef40d Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Sun, 13 Sep 2020 22:16:19 +0100 Subject: [PATCH 1/2] Add JSError with tests, add JSObject.description --- .../Sources/PrimaryTests/main.swift | 8 ++++++++ .../JavaScriptKit/BasicObjects/JSError.swift | 20 +++++++++++++++++++ .../FundamentalObjects/JSObject.swift | 3 +++ 3 files changed, 31 insertions(+) create mode 100644 Sources/JavaScriptKit/BasicObjects/JSError.swift diff --git a/IntegrationTests/TestSuites/Sources/PrimaryTests/main.swift b/IntegrationTests/TestSuites/Sources/PrimaryTests/main.swift index 292e6f3a5..f62133c71 100644 --- a/IntegrationTests/TestSuites/Sources/PrimaryTests/main.swift +++ b/IntegrationTests/TestSuites/Sources/PrimaryTests/main.swift @@ -394,3 +394,11 @@ try test("TypedArray_Mutation") { } try expectEqual(toString(array.jsValue().object!), jsStringify(Array(0..<100))) } + +try test("Error") { + let message = "test error" + let error = JSError(message: message) + try expectEqual(error.name, "Error") + try expectEqual(error.message, message) + try expectEqual(error.description, "Error: test error") +} diff --git a/Sources/JavaScriptKit/BasicObjects/JSError.swift b/Sources/JavaScriptKit/BasicObjects/JSError.swift new file mode 100644 index 000000000..a498ff3b7 --- /dev/null +++ b/Sources/JavaScriptKit/BasicObjects/JSError.swift @@ -0,0 +1,20 @@ +public final class JSError { + private let ref: JSObject + private static let constructor = JSObject.global.Error.function! + + public init(message: String) { + ref = Self.constructor.new([message]) + } + + public var message: String { + ref.message.string! + } + + public var name: String { + ref.name.string! + } +} + +extension JSError: CustomStringConvertible { + public var description: String { ref.description } +} \ No newline at end of file diff --git a/Sources/JavaScriptKit/FundamentalObjects/JSObject.swift b/Sources/JavaScriptKit/FundamentalObjects/JSObject.swift index 076367a5d..a8fb48b6b 100644 --- a/Sources/JavaScriptKit/FundamentalObjects/JSObject.swift +++ b/Sources/JavaScriptKit/FundamentalObjects/JSObject.swift @@ -48,3 +48,6 @@ public class JSObject: Equatable { } } +extension JSObject: CustomStringConvertible { + public var description: String { self.toString!().string! } +} \ No newline at end of file From e716309f64b2ee739d2658d6e1be0f07cabdc1fa Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Sun, 13 Sep 2020 22:20:01 +0100 Subject: [PATCH 2/2] Add newlines at end of files --- Sources/JavaScriptKit/BasicObjects/JSError.swift | 2 +- Sources/JavaScriptKit/FundamentalObjects/JSObject.swift | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Sources/JavaScriptKit/BasicObjects/JSError.swift b/Sources/JavaScriptKit/BasicObjects/JSError.swift index a498ff3b7..1ed8c0ffd 100644 --- a/Sources/JavaScriptKit/BasicObjects/JSError.swift +++ b/Sources/JavaScriptKit/BasicObjects/JSError.swift @@ -17,4 +17,4 @@ public final class JSError { extension JSError: CustomStringConvertible { public var description: String { ref.description } -} \ No newline at end of file +} diff --git a/Sources/JavaScriptKit/FundamentalObjects/JSObject.swift b/Sources/JavaScriptKit/FundamentalObjects/JSObject.swift index a8fb48b6b..40bc4658b 100644 --- a/Sources/JavaScriptKit/FundamentalObjects/JSObject.swift +++ b/Sources/JavaScriptKit/FundamentalObjects/JSObject.swift @@ -50,4 +50,4 @@ public class JSObject: Equatable { extension JSObject: CustomStringConvertible { public var description: String { self.toString!().string! } -} \ No newline at end of file +}