summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
ecebfdb)
Signed-off-by: Jean-Sebastien Gelinas <calestar@gmail.com>
Signed-off-by: Jean Privat <jean@pryen.org>
class ToolContext
special MMContext
# Number of errors
class ToolContext
special MMContext
# Number of errors
- readable var _error_count: Int = 0
+ readable var _error_count: Int = 0
# Number of warnings
readable var _warning_count: Int = 0
# Number of warnings
readable var _warning_count: Int = 0
+ fun check_errors
+ do
+ if error_count > 0 then exit(1)
+ end
+
# Display an error
fun error(s: String)
do
# Display an error
fun error(s: String)
do
if _processing_modules.has(full_name) then
# FIXME: Generate better error
error("Error: Dependency loop for module {full_name}")
if _processing_modules.has(full_name) then
# FIXME: Generate better error
error("Error: Dependency loop for module {full_name}")
end
_processing_modules.add(full_name)
var m = l.load_and_process_module(self, module_name, dir)
end
_processing_modules.add(full_name)
var m = l.load_and_process_module(self, module_name, dir)
if not filename.file_exists then
error("Error: File {filename} not found.")
if not filename.file_exists then
error("Error: File {filename} not found.")
if m != null then return m
error("Error: {filename} is not a NIT source module.")
if m != null then return m
error("Error: {filename} is not a NIT source module.")
end
# FIXME: Generate better error
error("Error: No ressource found for module {module_name}.")
end
# FIXME: Generate better error
error("Error: No ressource found for module {module_name}.")
if file.eof then
context.error("Error: Problem in opening file {filename}")
if file.eof then
context.error("Error: Problem in opening file {filename}")
end
var m = parse_file(context, file, filename, module_name, dir)
if file != stdin then file.close
end
var m = parse_file(context, file, filename, module_name, dir)
if file != stdin then file.close
end
if clibdir == null then
error("Error: Cannot locate NIT C library directory. Uses --clibdir or envvar NIT_DIR.")
end
if clibdir == null then
error("Error: Cannot locate NIT C library directory. Uses --clibdir or envvar NIT_DIR.")
end
end
bindir = opt_bindir.value
end
end
bindir = opt_bindir.value
end
if bindir == null then
error("Error: Cannot locate NIT tools directory. Uses --bindir or envvar NIT_DIR.")
end
if bindir == null then
error("Error: Cannot locate NIT tools directory. Uses --bindir or envvar NIT_DIR.")
# Create local classes and attach them to global classes
var mmbv = new ClassBuilderVisitor(tc, self)
mmbv.visit(node)
# Create local classes and attach them to global classes
var mmbv = new ClassBuilderVisitor(tc, self)
mmbv.visit(node)
- if tc.error_count > 0 then exit(1)
if mhe.direct_greaters.is_empty then
process_default_classes(tc)
if mhe.direct_greaters.is_empty then
process_default_classes(tc)
# Resolve classes in super clauses
var mmbv1 = new ClassSpecializationBuilderVisitor(tc, self)
mmbv1.visit(node)
# Resolve classes in super clauses
var mmbv1 = new ClassSpecializationBuilderVisitor(tc, self)
mmbv1.visit(node)
- if tc.error_count > 0 then exit(1)
# Compute specialization relation
for c in local_classes do
# Compute specialization relation
for c in local_classes do
end
c.compute_super_classes
end
end
c.compute_super_classes
end
- if tc.error_count > 0 then exit(1)
# Class that we will process now are those in the hierarchy
# Its mean all the visible classes and their super-classes
# Class that we will process now are those in the hierarchy
# Its mean all the visible classes and their super-classes
var mmbv1b = new ClassAncestorBuilder(tc, self)
for c in classes do
c.accept_class_visitor(mmbv1b)
var mmbv1b = new ClassAncestorBuilder(tc, self)
for c in classes do
c.accept_class_visitor(mmbv1b)
- if tc.error_count > 0 then exit(1)
for c in classes do
c.accept_class_visitor(mmbv1b)
end
for c in classes do
c.accept_class_visitor(mmbv1b)
end
- if tc.error_count > 0 then exit(1)
# Property inhritance and introduction
var mmbv2 = new PropertyBuilderVisitor(tc, self)
# Property inhritance and introduction
var mmbv2 = new PropertyBuilderVisitor(tc, self)
# Note that inherited unredefined property are processed on demand latter
end
# Note that inherited unredefined property are processed on demand latter
end
- if tc.error_count > 0 then exit(1)
# Property signature analysis and inheritance conformance
var mmbv3 = new PropertyVerifierVisitor(tc, self)
# Property signature analysis and inheritance conformance
var mmbv3 = new PropertyVerifierVisitor(tc, self)
- if tc.error_count > 0 then exit(1)
end
# Create some primitive default classes if they do not exists
end
# Create some primitive default classes if they do not exists
var err = node_tree.n_eof
assert err isa PError
context.error("{err.locate}: {err.message}")
var err = node_tree.n_eof
assert err isa PError
context.error("{err.locate}: {err.message}")
end
var node_module = node_tree.n_base
assert node_module isa AModule
end
var node_module = node_tree.n_base
assert node_module isa AModule
private fun process_syntax(tc: ToolContext)
do
do_mmbuilder(tc)
private fun process_syntax(tc: ToolContext)
do
do_mmbuilder(tc)
- if tc.error_count > 0 then exit(1)
- if tc.error_count > 0 then exit(1)