Commit 9fc2098d authored by sof's avatar sof
Browse files

[project @ 1998-10-02 09:20:04 by sof]

Generalise --exlude-module=M handling slightly, it now
will ignore any appearances of M along the user import
path too.
parent 05bfa2a6
...@@ -192,6 +192,7 @@ foreach $sf (@Src_files) { ...@@ -192,6 +192,7 @@ foreach $sf (@Src_files) {
} }
&slurp_file_for_imports($file_to_read, $sf); &slurp_file_for_imports($file_to_read, $sf);
# Delete the temporary.
if ( $sf =~ /\.l(hs|y)$/ ) { if ( $sf =~ /\.l(hs|y)$/ ) {
unlink "$Tmp_prefix.hs"; unlink "$Tmp_prefix.hs";
} }
...@@ -273,7 +274,7 @@ sub mangle_command_line_args { ...@@ -273,7 +274,7 @@ sub mangle_command_line_args {
} elsif ( /^-(x|-exclude-module=)(.*)/ ) { } elsif ( /^-(x|-exclude-module=)(.*)/ ) {
local($thing) = &grab_arg_arg($1,$2); local($thing) = &grab_arg_arg($1,$2);
$IgnoreMe{$thing} = 'y'; $IgnoreMe{$thing} = 'Y';
} elsif ( /^-(X|-exclude-directory=)(.*)/ ) { } elsif ( /^-(X|-exclude-directory=)(.*)/ ) {
foreach $d ( split(/:/,&grab_arg_arg($1, $2)) ) { foreach $d ( split(/:/,&grab_arg_arg($1, $2)) ) {
push(@Ignore_dirs,"$d"); push(@Ignore_dirs,"$d");
...@@ -356,7 +357,7 @@ sub preprocess_import_dirs { ...@@ -356,7 +357,7 @@ sub preprocess_import_dirs {
next unless /(.*)\.(hi|l?hs|l?y)$/; next unless /(.*)\.(hi|l?hs|l?y)$/;
#don't tag it twice or overwrite it with a diff. value #don't tag it twice or overwrite it with a diff. value
next if $IgnoreMe{$1}; next if $IgnoreMe{$1};
print STDERR "Module $d/$1.$2 will be ignored\n" if $Verbose; print STDERR "Module $d will be ignored\n" if $Verbose;
$IgnoreMe{$1} = 'y'; $IgnoreMe{$1} = 'y';
} }
...@@ -373,6 +374,14 @@ sub slurp_file_for_imports { ...@@ -373,6 +374,14 @@ sub slurp_file_for_imports {
$last_seen_dir =~ s/\/[^\/]+$//; # strip to dir name $last_seen_dir =~ s/\/[^\/]+$//; # strip to dir name
$last_seen_dir = '.' if ($last_seen_dir eq $orig_src_file); $last_seen_dir = '.' if ($last_seen_dir eq $orig_src_file);
local($mod_name) = $orig_src_file;
$mod_name =~ s/.*\/([^\/]+)$/$1/g;
$mod_name =~ s/^([^.]+)\.(.*)$/$1/;
print STDERR "Warning: processing module $mod_name, which I was supposed to ignore.\n"
if ( $IgnoreMe{$mod_name} eq 'Y' && $Warnings );
&process_dependency('import',0,'Prelude') if ($Include_prelude); &process_dependency('import',0,'Prelude') if ($Include_prelude);
# we mangle #include's so they will also leave something # we mangle #include's so they will also leave something
...@@ -422,7 +431,11 @@ sub process_dependency { ...@@ -422,7 +431,11 @@ sub process_dependency {
local($todo,$source,$modname) = @_; local($todo,$source,$modname) = @_;
if ($todo eq 'import') { if ($todo eq 'import') {
if ( $ModuleIn{$modname} ) { if ( $IgnoreMe{$modname} eq 'Y' ) {
# user specifically asked for this module
# to be ignored.
$follow_file = '__ignore__';
} elsif ( $ModuleIn{$modname} ) {
$follow_file = "$ModuleIn{$modname}/$modname.hi"; $follow_file = "$ModuleIn{$modname}/$modname.hi";
} else { # hard way } else { # hard way
$follow_file = $follow_file =
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment