Version française
Home     About     Download     Resources     Contact us    
Browse thread
What is this?
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Benoit de Boursetty <debourse@e...>
Subject: Re: What is this?
On Tue, 16 Nov 1999, skaller wrote:

> Can anyone see this error?
> --------------------------------------------------------
> File "py_interp.ml", line 477, characters 6-545:
> This expression has type int but is here used with type unit
> ---------------------------------------------------------
> [exception SystemExit of int]
> .....
>
>   method run_file filename : int >       try
>         ignore (environment # set_attr (PyString "__name__") (PyString
> "__main__"));
>         ignore (environment # set_attr (PyString "__file__") (PyString
> filename));
>         Py_exec_module.exec_file (self:>interpreter_t)
>           (Py_exec.py_exec (self:>interpreter_t)
> (environment:>environment_t))
>           filename
>         ;
>         0
>       with
>       | SystemExit n -> n
>       | x ->
>         print_endline ("Error Near line " ^ (string_of_int (fst
> source_reference)));
>         flush stdout;
>         self#py_raise x;
>         0 (* dummy value *)
>
> -------------------------------------------------------
>
> This method is NOT called anywhere in the module.
> I cannot see where the inference engine gets the
> idea that the expression should have type unit.
>
>
> [That message is really annoying. It should read
> " .. but is used _somewhere else_ with type .."
> since it always means that. It would be nice
> to know where that somewhere else is, since half the
> time, that is where the error is]

I can't see the error, but I suggest you comment out most of the code. If
you begin with

 try
   0
 with SystemExit n -> n
  | x -> 0

and uncomment things afterwards, you can find where the problem is by
dichotomy. Since you have 6 lines of code, it shouldn't take you more than
3 tries :)

Benoît de Boursetty.