Merge branch 'alexis/various-fixes' into wip
[nit.git] / src / syntax / syntax.nit
index 8a8f18e..06c3bcb 100644 (file)
@@ -32,16 +32,26 @@ special ModuleLoader
 
        redef fun parse_file(context, file, filename, name, dir)
        do
+               var name_is_valid = name.to_s.length > 0 and name.to_s[0].is_lower
+               for char in name.to_s do        if not char.is_digit and not char.is_letter and not char == '_'
+               then
+                       name_is_valid = false
+                       break
+               end
+               if not name_is_valid then
+                       context.error( null, "{filename}: Error package name \"{name}\", must start with a lower case letter and contain only letters, digits and '_'." )
+               end
+
                var lexer = new Lexer(file, filename)
                var parser = new Parser(lexer)
                var node_tree = parser.parse
                if node_tree.n_base == null then
                        var err = node_tree.n_eof
-                       assert err isa PError
+                       assert err isa AError
                        context.fatal_error(err.location, err.message)
                end
                var node_module = node_tree.n_base
-               assert node_module isa AModule
+               assert node_module != null
                var module_loc = new Location.with_file(filename)
                var module = new MMSrcModule(context, node_module, dir, name, module_loc)
                return module