var opt_context = new OptionContext ("- Vala");
opt_context.set_help_enabled (true);
opt_context.add_main_entries (options, null);
- opt_context.parse (ref compile_args);
+ unowned string[] temp_args = compile_args;
+ opt_context.parse (ref temp_args);
} catch (ShellError e) {
stdout.printf ("%s\n", e.message);
return 1;
if (arg.target_type.is_disposable ()) {
if (!(arg.value_type is PointerType) && !arg.value_type.value_owned) {
/* variable doesn't own the value */
- Report.error (arg.source_reference, "Invalid assignment from owned expression to unowned variable");
+ Report.error (arg.source_reference, "Argument %d: Cannot pass unowned ref argument to owned reference parameter".printf (i + 1));
+ return false;
+ }
+ }
+
+ // owned variables can only be used with owned ref parameters
+ if (arg.value_type.is_disposable ()) {
+ if (!arg.target_type.value_owned) {
+ /* parameter doesn't own the value */
+ Report.error (arg.source_reference, "Argument %d: Cannot pass owned ref argument to unowned reference parameter".printf (i + 1));
return false;
}
}