-
Notifications
You must be signed in to change notification settings - Fork 125
/
debug.opa
112 lines (90 loc) · 2.68 KB
/
debug.opa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
/*
Copyright © 2011 MLstate
This file is part of OPA.
OPA is free software: you can redistribute it and/or modify it under the
terms of the GNU Affero General Public License, version 3, as published by
the Free Software Foundation.
OPA is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for
more details.
You should have received a copy of the GNU Affero General Public License
along with OPA. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* Debugging utilities
*
* @author David Rajchenbach-Teller, 2010 (documentation)
* @destination public
* @stability stabilizing
*/
/**
* {1 About this module}
*
* {1 Where should I start?}
*
* {1 What if I need more?}
*/
/**
* {1 Interface}
*/
Debug = {{
@deprecated({use="the directive @fail (or Log.error if you do not want to fail)"})
error(s) = @fail(s) :'a
/**
* Print a warning and continue.
*/
warning = %% Bslpervasives.warning %%
/**
* Print a message and continue.
*
* If this function is executed on the client, the message will be displayed in a side window.
* On the server, the message will be displayed on the console.
*/
jlog = %% Bslpervasives.jlog %%
/**
* Get a string representation of any value
*/
dump = %% Bslpervasives.dump %% : 'a -> string
/**
* Print a message and continue, in some conditions.
*
* A variant of {!Debug.jlog} that prints a message only of some condition is verified.
*/
jlog_if(b: bool, msg: -> string) = if b then jlog(msg()) else void
/**
* As {!error}, but also displays the current local stack
*/
error_with_stack(mess: string)=
@fail( "ERROR = {mess:string}"
^ "Stack =\n {Continuation.print_trace()}" )
/**
* As {!Debug.jlog}, but also displays the current local stack
*/
jlog_with_stack(mess: string)=
jlog( "ERROR = {mess:string}"
^ "Stack =\n {Continuation.print_trace()}" )
/**
* Return a developer-readable printout of the local stack.
*
* This only shows the local stack, not the full client-to-server or server-to-client stack.
*/
@deprecated({use="Continuation.print_trace"}) get_stack = %% Bslpervasives.get_stack %%
/**
* As [warning].
*/
alert(s)=warning(s)
/**
* Flush all outputs.
*/
flush_all = %% Bslpervasives.flush_all %%
/**
* Deprecated
**/
@deprecated({use="do @assert(cond) instead of assert(cond, fun)"})
assert(condition:bool, message:-> string) =
if condition then void
else error("Assertion failed: {message()}")
}}
@deprecated({use="do @assert(cond) instead of assert(cond, fun)"})
assert = Debug.assert