From: Alexis Laferrière Date: Wed, 11 Jul 2012 16:44:16 +0000 (-0400) Subject: separate_options: improves separate options (.nit.args files) handling X-Git-Tag: v0.6~322 X-Git-Url: http://nitlanguage.org separate_options: improves separate options (.nit.args files) handling - Reports errors in .nit.args files as fatal errors - Correctly report module name in errors - Adds error test Signed-off-by: Alexis Laferrière --- diff --git a/src/separate_options.nit b/src/separate_options.nit index 4e33f29..a318724 100644 --- a/src/separate_options.nit +++ b/src/separate_options.nit @@ -22,13 +22,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 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 +53,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 diff --git a/tests/error_separate_options.nit b/tests/error_separate_options.nit new file mode 100644 index 0000000..c508be3 --- /dev/null +++ b/tests/error_separate_options.nit @@ -0,0 +1 @@ +print "arg is wrong" diff --git a/tests/error_separate_options.nit.args b/tests/error_separate_options.nit.args new file mode 100644 index 0000000..a0912ed --- /dev/null +++ b/tests/error_separate_options.nit.args @@ -0,0 +1,2 @@ +--foo +--invalid-arg other_invalid_arg diff --git a/tests/sav/error_separate_options.res b/tests/sav/error_separate_options.res new file mode 100644 index 0000000..c99f852 --- /dev/null +++ b/tests/sav/error_separate_options.res @@ -0,0 +1 @@ +arg is wrong diff --git a/tests/sav/error_separate_options.sav b/tests/sav/error_separate_options.sav new file mode 100644 index 0000000..511378c --- /dev/null +++ b/tests/sav/error_separate_options.sav @@ -0,0 +1,3 @@ +module "error_separate_options" args file has unknown args: --foo +module "error_separate_options" args file has unknown args: --foo, --invalid-arg, other_invalid_arg +module "error_separate_options" args file has unknown args: --foo, --invalid-arg, other_invalid_arg