Mantis Bug Tracker

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0000326OCamlOCaml generalpublic2001-03-26 17:212001-03-30 15:42
Reporteradministrator 
Assigned To 
PrioritynormalSeverityminorReproducibilityalways
StatusclosedResolutionfixed 
PlatformOSOS Version
Product Version 
Target VersionFixed in Version 
Summary0000326: bug sur la compilation des or-patterns ?
DescriptionBonjour,

j'obtiens un resultat curieux en utilisant un or-pattern.
je n'ai pas réussi a reproduire dans un fichier simple, je vous envoie
donc le code de la fonction dans laquelle j'ai localisé le probleme.

----------------------------- debut ----------------------------------
let handle_module data q =
  print_endline (Prolog_ast.to_string q);
  flush stdout;
  match q with
    | Funct("module",[modu;preds],_,_)
    | Funct("module",[modu;preds;_],_,_) ->
        begin try
          print_endline (Prolog_ast.to_string q);
          flush stdout;
          let module_name =
            (Term_utils.Convert.to_atom
               (fun _ ->
                  wrong_argument "module" data modu;
                  failwith "")
               modu)
          and predicates_list =
            Term_utils.Convert.to_a_list
              (Term_utils.Convert.to_funct
                 (fun t -> begin
                    print_endline (Prolog_ast.to_string t);
                    exit 1
                      (*
                        wrong_argument "module" data modu;
                        failwith ""
                        end*)
                  end
                 )
              )
              preds
          in
            print_endline ("module : " ^ module_name);
            Transform.set_defining data.infos
              { Transform.name = module_name ;
                Transform.predicates = Some predicates_list };
            true
        with Failure _ -> false
        end
    | _ -> false

------------------------------- fin ---------------------------------

en utilisant cette fonction j'obtiens le resultat suivant:

--debut--

[ coquery @ monbazillac ~/monbazillac/DEVEL/tclp ]
$ ./tclp tests/simple.pl
##################################################
"tests/simple.pl" :


module(simple, .(/(grand_pere, 2), .(/(grand_mere, 2), .(/(parent, 2),
.(/(pere, 2), .(/(mere, 2), []))))))
simple
Fatal error: uncaught exception Invalid_argument("String.create")

--fin--

"module(...)" correspond au premier affichage de q et "simple" au
deuxieme.

en commentant une partie du pattern :
...

  match q with
    | Funct("module",[modu;preds],_,_)
    (*| Funct("module",[modu;preds;_],_,_)*) ->
        begin try
          print_endline (Prolog_ast.to_string q);
          flush stdout;

...

on obtient :

--debut--

[ coquery @ monbazillac ~/monbazillac/DEVEL/tclp ]
$ ./tclp tests/simple.pl
##################################################
"tests/simple.pl" :


module(simple, .(/(grand_pere, 2), .(/(grand_mere, 2), .(/(parent, 2),
.(/(pere, 2), .(/(mere, 2), []))))))
module(simple, .(/(grand_pere, 2), .(/(grand_mere, 2), .(/(parent, 2),
.(/(pere, 2), .(/(mere, 2), []))))))
File: "/home/monbazillac/coquery/DEVEL/tclp/tests/simple.pl", line 10,
characters 5-8functor ``jean/0'' was not declared
module : simple
after reading
pere(jean, fred).
pere(fred, alain).

--fin--

le comportement du programme est conforme à ce que j'attends.
ici les deux affichages de q sont semblables.



    Emmanuel Coquery

e-mail: Emmanuel.Coquery@inria.fr


TagsNo tags attached.
Attached Files

- Relationships

-  Notes
(0000549)
administrator (administrator)
2001-03-30 15:39



Le bug signalé par toi est corrigé et la correction commise dans les
sources de développement.

En attendant le lacher de ces sources, un moyen de contourner le bug
est de ne pas utiliser à la fois ocamlc et deux variables ou plus dans
les orpats.


Merci d'avoir signalé le bug.

--Luc


(0000550)
administrator (administrator)
2001-03-30 15:42

Fixed by Luc 30-03-2001.

- Issue History
Date Modified Username Field Change
2005-11-18 10:13 administrator New Issue


Copyright © 2000 - 2011 MantisBT Group
Powered by Mantis Bugtracker