# 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.
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)
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
redef fun fill_buffer
do
- _buffer.clear
+ buffer_reset
end_reached = true
end
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"
end
end
if candidate == null then return null
- return identify_file(candidate)
+ return identify_module(candidate)
end
end
# 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
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)