rta: add `live_types_to_csv` to provide human-readable info on types
[nit.git] / src / separate_options.nit
index 4e33f29..8ebe70e 100644 (file)
@@ -1,10 +1,28 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2012 Jean Privat <jean@pryen.org>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
 # module adding separate specification of opts to compiler
+module separate_options
 
 import mmloader
 import compiling
 
 # only to order correctly redefs of compile_separate_module
 import native_interface
+import ffi
 
 redef class ToolContext
        # all ops precised in .ops files
@@ -22,13 +40,15 @@ redef class ToolContext
                separate_options.add_option( opt_cc_include_paths )
        end
 
-       fun integrate_separate_options( options : String )
+       fun integrate_separate_options( options : String, mod : MMModule )
        do
-               for line in options.split do
+               for line in options.split_with('\n') do
                        line = line.strip_extension( "\n" )
                        separate_options.parse( line.split_with( ' ' ) )
-                       if separate_options.rest.length > 0 then
-                               warning( null, "module {self} args file has unknown args: {separate_options.rest.join(", ")}" )
+                       var rest = new Array[String]
+                       for s in separate_options.rest do if s.length > 0 then rest.add( s )
+                       if rest.length > 0 then
+                               error( null, "module \"{mod}\" args file has unknown args: {rest.join(", ")}" )
                        end
                end
 
@@ -51,7 +71,8 @@ redef class MMSrcModule
                        var option_content = option_file.read_all
                        option_file.close
 
-                       cprogram.program.tc.integrate_separate_options( option_content )
+                       cprogram.program.tc.integrate_separate_options( option_content, self )
+                       cprogram.program.tc.check_errors
                end
        end
 end