Merge: Loader refactor
[nit.git] / contrib / online_ide / sources / nit / pnacl_nit.nit
index 8274f44..122b507 100644 (file)
 # A version of the naive Nit interpreter for PNaCl.
 module pnacl_nit
 
-import naive_interpreter
-import debugger
+import nitc::interpreter::naive_interpreter
+import nitc::interpreter::debugger
 import pnacl
-intrude import toolcontext
-intrude import modelbuilder
-intrude import standard::file
-
-redef interface Object
-       # We redefine exit to start a new thread before killing the one that called exit.
-       redef fun exit(exit_value: Int)
-       do
-               var dictionary = new PepperDictionary
-               dictionary["exit"] = exit_value
-               dictionary["exit_thread"] = "A new thread has been made available for Nit."
-               create_thread
-               app.post_dictionary dictionary
-               exit_thread exit_value
-       end
+intrude import nitc::toolcontext
+intrude import nitc::loader
+intrude import core::file
+
+# We redefine exit to start a new thread before killing the one that called exit.
+redef fun exit(exit_value: Int)
+do
+       var dictionary = new PepperDictionary
+       dictionary["exit"] = exit_value
+       dictionary["exit_thread"] = "A new thread has been made available for Nit."
+       create_thread
+       app.post_dictionary dictionary
+       exit_thread exit_value
 end
 
 #hack realpath.
@@ -59,14 +57,14 @@ end
 
 redef class ToolContext
        # We don't need 'the compute_nit_dir'.
-       redef fun compute_nit_dir: nullable String
+       redef fun compute_nit_dir
        do
                return "/pnacl"
        end
 end
 
-# We have to redef some IFStream methods because we don't use NativeFiles anymore.
-redef class IFStream
+# We have to redef some FileReader methods because we don't use NativeFiles anymore.
+redef class FileReader
 
        # Looks in the 'files' HashMap.
        redef init open(path: String)
@@ -74,7 +72,7 @@ redef class IFStream
                self.path = path
                var file = sys.files[path]
                prepare_buffer(file.length)
-               _buffer.append(file)
+               path.copy_to_native(_buffer, file.length, 0, 0)
        end
 
        redef fun close
@@ -84,7 +82,7 @@ redef class IFStream
 
        redef fun fill_buffer
        do
-               _buffer.clear
+               buffer_reset
                end_reached = true
        end
 
@@ -99,7 +97,7 @@ redef class ModelBuilder
        redef fun module_absolute_path(path: String): String do return path
 
        # We don't use paths as the interpreter, so we don't use location or lookpaths args (see the default implementation).
-       redef fun search_module_in_paths(location: nullable Location, name: String, lookpaths: Collection[String]): nullable ModulePath
+       redef fun search_module_in_paths(location: nullable Location, name: String, lookpaths: Collection[String]): nullable MModule
        do
                var candidate: nullable String = null
                var try_file = "{name}.nit"
@@ -116,7 +114,7 @@ redef class ModelBuilder
                        end
                end
                if candidate == null then return null
-               return identify_file(candidate)
+               return identify_module(candidate)
        end
 end
 
@@ -148,7 +146,7 @@ class Pnacl_nit
                        # We need a model to collect stufs
                        var model = new Model
                        # An a model builder to parse files
-                       var modelbuilder = new ModelBuilder(model, toolcontext.as(not null))
+                       var modelbuilder = new ModelBuilder(model, toolcontext)
 
                        var arguments = toolcontext.option_context.rest
                        var progname = arguments.first
@@ -171,8 +169,8 @@ class Pnacl_nit
                                mainmodule.set_imported_mmodules(mmodules)
                        end
 
-                       var self_mm = mainmodule.as(not null)
-                       var self_args = arguments.as(not null)
+                       var self_mm = mainmodule
+                       var self_args = arguments
 
                        if toolcontext.opt_debugger_autorun.value then
                                modelbuilder.run_debugger_autorun(self_mm, self_args)