Skip to content

Commit 2f9e881

Browse files
authored
Only call Signal tracebacks in dev mode (#78)
Moves Signal connect() and disconnect() tracebacks under a dev flag. The remaining debug.traceback() calls will all immediately throw an error, so there's no point in calling them conditionally.
1 parent a5002a3 commit 2f9e881

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

src/Signal.lua

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
Handlers are fired in order, and (dis)connections are properly handled when
66
executing an event.
77
]]
8+
local __DEV__ = _G.__DEV__
9+
810
local function immutableAppend(list, ...)
911
local new = {}
1012
local len = #list
@@ -35,7 +37,7 @@ end
3537
type Listener = {
3638
callback: (...any) -> (),
3739
disconnected: boolean,
38-
connectTraceback: string,
40+
connectTraceback: string?,
3941
disconnectTraceback: string?,
4042
}
4143

@@ -74,10 +76,14 @@ function Signal:connect(callback)
7476
local listener: Listener = {
7577
callback = callback,
7678
disconnected = false,
77-
connectTraceback = debug.traceback(),
79+
connectTraceback = nil,
7880
disconnectTraceback = nil,
7981
}
8082

83+
if __DEV__ then
84+
listener.connectTraceback = debug.traceback()
85+
end
86+
8187
self._listeners = immutableAppend(self._listeners, listener)
8288

8389
local function disconnect()
@@ -94,8 +100,11 @@ function Signal:connect(callback)
94100
error("You may not unsubscribe from a store listener while the reducer is executing.")
95101
end
96102

103+
if __DEV__ then
104+
listener.disconnectTraceback = debug.traceback()
105+
end
106+
97107
listener.disconnected = true
98-
listener.disconnectTraceback = debug.traceback()
99108
self._listeners = immutableRemoveValue(self._listeners, listener)
100109
end
101110

0 commit comments

Comments
 (0)