summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPascal Rigaux <pixel@mandriva.com>2002-12-04 22:11:57 +0000
committerPascal Rigaux <pixel@mandriva.com>2002-12-04 22:11:57 +0000
commit4709dc6a4005bda226fb9c7b73282468d2c5d836 (patch)
treecc69c7ed351effc87baf21b045019275e8f9deda
parenta9a9b4fe62d034bcc8692d14289386bd4024d021 (diff)
downloadperl-MDK-Common-4709dc6a4005bda226fb9c7b73282468d2c5d836.tar
perl-MDK-Common-4709dc6a4005bda226fb9c7b73282468d2c5d836.tar.gz
perl-MDK-Common-4709dc6a4005bda226fb9c7b73282468d2c5d836.tar.bz2
perl-MDK-Common-4709dc6a4005bda226fb9c7b73282468d2c5d836.tar.xz
perl-MDK-Common-4709dc6a4005bda226fb9c7b73282468d2c5d836.zip
handle "use lib qw(...)"
-rw-r--r--perl-MDK-Common.spec7
-rw-r--r--perl_checker.src/perl_checker.ml2
-rw-r--r--perl_checker.src/tree.ml6
-rw-r--r--perl_checker.src/tree.mli1
4 files changed, 13 insertions, 3 deletions
diff --git a/perl-MDK-Common.spec b/perl-MDK-Common.spec
index 8ec65f1..ab4d01d 100644
--- a/perl-MDK-Common.spec
+++ b/perl-MDK-Common.spec
@@ -2,7 +2,7 @@
# do not change the version here, change in MDK/Common.pm.pl
%define version THEVERSION
-%define release 4mdk
+%define release 5mdk
Summary: Various simple functions
Name: perl-MDK-Common
@@ -50,6 +50,11 @@ rm -rf $RPM_BUILD_ROOT
# MODIFY IN THE CVS: cvs.mandrakesoft.com:/cooker soft/perl-MDK-Common
%changelog
+* Wed Dec 4 2002 Pixel <pixel@mandrakesoft.com> 1.0.4-5mdk
+- add unused variable detection
+- allow $AUTOLOAD usage in AUTOLOAD()
+- handle "use lib qw(...)"
+
* Wed Dec 4 2002 Pixel <pixel@mandrakesoft.com> 1.0.4-4mdk
- warn use of "cond ? list : ()" (use if_(cond, list) instead)
diff --git a/perl_checker.src/perl_checker.ml b/perl_checker.src/perl_checker.ml
index f328b32..bf4853d 100644
--- a/perl_checker.src/perl_checker.ml
+++ b/perl_checker.src/perl_checker.ml
@@ -51,7 +51,7 @@ and parse_package_if_needed state (package_name, pos) =
if List.mem_assoc package_name state.per_package then [], state else
try
let package = snd (List.hd state.per_package) in
- let inc = inc package.file_name package.package_name package.has_package_name in
+ let inc = !Tree.use_lib @ inc package.file_name package.package_name package.has_package_name in
if List.mem package_name !ignored_packages then [], state
else
let rel_file = String.concat "/" (split_at2 ':'':' package_name) ^ ".pm" in
diff --git a/perl_checker.src/tree.ml b/perl_checker.src/tree.ml
index ee1a4ce..bc72db8 100644
--- a/perl_checker.src/tree.ml
+++ b/perl_checker.src/tree.ml
@@ -43,6 +43,7 @@ let anonymous_package_count = ref 0
let default_state = { per_package = []; files_parsed = []; global_vars_declared = Hashtbl.create 256; global_vars_used = ref [] }
let empty_exports = { export_ok = []; export_auto = []; export_tags = []; special_export = None }
let ignored_packages = ref []
+let use_lib = ref []
let die_with_pos pos msg = failwith (Info.pos2sfull pos ^ msg)
let warn_with_pos pos msg = prerr_endline (Info.pos2sfull pos ^ msg)
@@ -146,13 +147,16 @@ let get_exported t =
) empty_exports t
let uses_external_package = function
- | "vars" | "MDK::Common::Globals" | "Exporter" | "diagnostics" | "strict" | "lib" | "POSIX"
+ | "vars" | "MDK::Common::Globals" | "Exporter" | "diagnostics" | "strict" | "lib" | "POSIX" | "Gtk" | "Gtk2"
| "Config" | "Socket" | "Net::FTP" | "IO::Socket" | "DynaLoader" | "Data::Dumper" -> true
| _ -> false
let get_uses t =
List.fold_left (fun uses e ->
match e with
+ | Use(Ident(None, "lib", _), [libs]) ->
+ use_lib := List.map snd (from_qw libs) @ !use_lib ;
+ uses
| Use(Ident _ as pkg, _) when uses_external_package (string_of_Ident pkg) -> uses
| Use(Ident(_, _, pos) as ident, l) ->
let package = string_of_Ident ident in
diff --git a/perl_checker.src/tree.mli b/perl_checker.src/tree.mli
index 71eeb04..e5d19c1 100644
--- a/perl_checker.src/tree.mli
+++ b/perl_checker.src/tree.mli
@@ -29,6 +29,7 @@ type state = {
}
val ignored_packages : string list ref
+val use_lib : string list ref
val default_state : state
val get_global_info_from_package : fromparser list -> per_package list * (string * pos) list