engines: the entry point is `sys.run` or else `sys.main`
[nit.git] / src / debugger.nit
index 63c09b6..24df936 100644 (file)
@@ -23,7 +23,6 @@ import nitx
 intrude import local_var_init
 intrude import scope
 intrude import toolcontext
-import websocket
 
 redef class Model
        # Cleans the model to remove a module and what it defines when semantic analysis fails on injected code
@@ -124,23 +123,11 @@ redef class ToolContext
        # -c
        var opt_debugger_autorun: OptionBool = new OptionBool("Launches the target program with the interpreter, such as when the program fails, the debugging prompt is summoned", "-c")
 
-       # --socket
-       var opt_socket_mode = new OptionBool("Launches the target program with raw output on the network via sockets", "--socket")
-
-       # --websocket
-       var opt_websocket_mode = new OptionBool("Launches the target program with output on the network via websockets", "--websocket")
-
-       # --port
-       var opt_debug_port: OptionInt = new OptionInt("Sets the debug port (Defaults to 22125) - Must be contained between 0 and 65535", 22125, "--port")
-
        redef init
        do
                super
                self.option_context.add_option(self.opt_debugger_mode)
                self.option_context.add_option(self.opt_debugger_autorun)
-               self.option_context.add_option(self.opt_socket_mode)
-               self.option_context.add_option(self.opt_websocket_mode)
-               self.option_context.add_option(self.opt_debug_port)
        end
 end
 
@@ -158,12 +145,8 @@ redef class ModelBuilder
 
                var interpreter = new Debugger(self, mainmodule, arguments)
 
-               set_stdstreams
-
                init_naive_interpreter(interpreter, mainmodule)
 
-               close_stdstreams
-
                var time1 = get_time
                self.toolcontext.info("*** END INTERPRETING: {time1-time0} ***", 2)
        end
@@ -176,53 +159,11 @@ redef class ModelBuilder
                var interpreter = new Debugger(self, mainmodule, arguments)
                interpreter.autocontinue = true
 
-               set_stdstreams
-
                init_naive_interpreter(interpreter, mainmodule)
 
-               close_stdstreams
-
                var time1 = get_time
                self.toolcontext.info("*** END INTERPRETING: {time1-time0} ***", 2)
        end
-
-       redef fun run_naive_interpreter(mmod, args)
-       do
-               set_stdstreams
-               super
-       end
-
-       fun set_stdstreams
-       do
-               if self.toolcontext.opt_socket_mode.value then
-                       var sock = new Socket.server(toolcontext.opt_debug_port.value, 1)
-                       var ns = sock.accept
-                       sock.close
-                       sys.set_io(ns,ns,ns)
-               else if self.toolcontext.opt_websocket_mode.value then
-                       var websock = new WebSocket(toolcontext.opt_debug_port.value, 1)
-                       websock.accept
-                       sys.set_io(websock,websock,websock)
-               end
-       end
-
-       fun close_stdstreams
-       do
-               if sys.stdin isa WebSocket or sys.stdin isa Socket then
-                       sys.stdin.close
-                       sys.stdout.close
-                       sys.stderr.close
-               end
-       end
-end
-
-redef class Sys
-       private fun set_io(istream: PollableIStream, ostream: OStream, errstream: OStream)
-       do
-               self.stdin = istream
-               self.stdout = ostream
-               self.stderr = ostream
-       end
 end
 
 # The class extending `NaiveInterpreter` by adding debugging methods
@@ -394,7 +335,8 @@ class Debugger
                                if initprop != null then
                                        self.send(initprop, [mobj])
                                end
-                               var mainprop = mmod.try_get_primitive_method("main", sys_type.mclass)
+                               var mainprop = mmod.try_get_primitive_method("run", sys_type.mclass) or else
+                                       mmod.try_get_primitive_method("main", sys_type.mclass)
                                if mainprop != null then
                                        self.rt_send(mainprop, [mobj])
                                end
@@ -647,13 +589,12 @@ class Debugger
 
                        var keys = map_of_instances.iterator
 
-                       print "Variables collection : \n"
+                       var self_var = seek_variable("self", frame)
+                       print "self: {self_var.to_s}"
 
                        for instance in map_of_instances.keys do
-                               print "Variable {instance.to_s}, Instance {map_of_instances[instance].to_s}"
+                               print "{instance.to_s}: {map_of_instances[instance].to_s}"
                        end
-
-                       print "\nEnd of current instruction \n"
                else if parts_of_command[1] == "stack" then
                        print self.stack_trace
                else if parts_of_command[1].chars.has('[') and parts_of_command[1].chars.has(']') then