Skip to content
This repository
tag: v811
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 113 lines (90 sloc) 2.743 kb
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
Something went wrong with that request. Please try again.