Mantis Bug Tracker

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0000360OCamlOCaml generalpublic2001-05-15 15:382001-05-22 05:41
Reporteradministrator 
Assigned To 
PrioritynormalSeverityminorReproducibilityalways
StatusclosedResolutionfixed 
PlatformOSOS Version
Product Version 
Target VersionFixed in Version 
Summary0000360: Expression de type recursive en position de parametre de classe
DescriptionBonjour,

Je pense qu'un bug est mis en évidence dans la simple session
suivante (le mesage d'erreur du compilateur me semble injustifié):

/rinderkn/OCaml> ocaml -rectypes
        Objective Caml version 3.01

# class ['a] c = object end;;
class ['a] c : object end
# type 'a t = K of 'a;;
type 'a t = K of 'a
# class d = ['a t as 'a] c;;
Characters 11-21:
Already bound type parameter a
# type u = 'a t as 'a;;
type u = 'a t as 'a
# class d = [u] c;;
class d : [u] c
#

Le même problème peut apparaître sans l'option -rectypes en utilisant
les variantes polymorphes:

/rinderkn/OCaml> ocaml
        Objective Caml version 3.01

# class ['a] c = object end;;
class ['a] c : object end
# type 'a t = [`K of 'a];;
type 'a t = [ `K of 'a]
# class d = ['a t as 'a] c;;
Characters 11-21:
Already bound type parameter a
# type u = 'a t as 'a;;
type u = 'a t as 'a
# class d = [u] c;;
class d : [u] c
#

Voilà. Tenez-moi au courant.

À part ça, j'avais posté récemment un autre rapport de possible bug à
caml@inria.fr, mais il me semble maintenant que j'aurais dû en fait
l'adresser à caml-bugs@pauillac.inria.fr, donc, dans le doute, je
copie ci-après mon premier message --- pardon pour l'éventuelle
redite.

---------------------------------------------------------------------
Date: Wed, 9 May 2001 17:57:20 +0200
From: Christian RINDERKNECHT <rinderkn@hugo.int-evry.fr>
To: caml@inria.fr
Subject: Deux bizarreries suspectes

Salut,

Il me semble que le comportement suivant met en évidence une
bizarrerie lexico-syntaxique:

        Objective Caml version 3.01
  
# module type S = sig val f : [< `A of <m : unit -> unit; ..>] -> unit end;;
Characters 58-60:
Syntax error: 'end' expected
Characters 16-19:
This 'sig' might be unmatched

Peut-être l'analyseur croit-il analyser un flux... En tout état de
cause, une espace supplémentaire permet de résoudre le problème, mais
néanmoins ce genre de truc s'ajoute à ceux pour ( * ) et consorts:

# module type S = sig val f : [< `A of <m : unit -> unit; ..> ] -> unit end;;
module type S = sig val f : [< `A of < m : unit -> unit; .. >] -> unit end
#

Indépendemment de la convention lexicale nécessaire, le résultat
imprimé du typeur n'est pas syntaxiquement correct (d'où mon mail).

D'autre part, je trouve bizarre l'erreur suivante:

# let _ : bool = true;;
 Characters 6-7:
 Syntax error

-----------------------------------------------------------------------



Amitiés à tous,

--

Christian

-----------------------------------------------------------------------
Christian Rinderknecht Phone +33 (0)1 60 76 44 43
Institut National des Télécommunications Fax +33 (0)1 60 76 47 11
Département Logiciels Réseaux (LOR) WWW
9, Rue Charles Fourier, F-91011 Évry Cedex
----------------
Return-Path: <rinderkn>
Received: from (rinderkn@localhost)
          by hugo.int-evry.fr (8.8.8/jtpda-5.3) id RAA08734
          ; Wed, 9 May 2001 17:57:20 +0200 (MET DST)
Date: Wed, 9 May 2001 17:57:20 +0200
From: Christian RINDERKNECHT <rinderkn@hugo.int-evry.fr>
To: caml@inria.fr
Cc: Christian RINDERKNECHT <rinderkn@hugo.int-evry.fr>
Subject: Deux bizarreries suspectes
Message-ID: <20010509175720.G6480@hugo.int-evry.fr>
X-Mailer: Mutt 0.95.5i
Mime-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset=iso-8859-1

Salut,

Il me semble que le comportement suivant met en évidence une
bizarrerie lexico-syntaxique:

        Objective Caml version 3.01
  
# module type S = sig val f : [< `A of <m : unit -> unit; ..>] -> unit end;;
Characters 58-60:
Syntax error: 'end' expected
Characters 16-19:
This 'sig' might be unmatched

Peut-être l'analyseur croit-il analyser un flux... En tout état de
cause, une espace supplémentaire permet de résoudre le problème, mais
néanmoins ce genre de truc s'ajoute à ceux pour ( * ) et consorts:

# module type S = sig val f : [< `A of <m : unit -> unit; ..> ] -> unit end;;
module type S = sig val f : [< `A of < m : unit -> unit; .. >] -> unit end
#

Indépendemment de la convention lexicale nécessaire, le résultat
imprimé du typeur n'est pas syntaxiquement correct (d'où mon mail).

D'autre part, je trouve bizarre l'erreur suivante:

# let _ : bool = true;;
 Characters 6-7:
 Syntax error

Amitiés,

--

Christian

-----------------------------------------------------------------------
Christian Rinderknecht Phone +33 (0)1 60 76 44 43
Institut National des Télécommunications Fax +33 (0)1 60 76 47 11
Département Logiciels Réseaux (LOR) WWW
9, Rue Charles Fourier, F-91011 Évry Cedex

----------------
----------------
TagsNo tags attached.
Attached Files

- Relationships

-  Notes
(0000575)
administrator (administrator)
2001-05-15 18:36

Salut Christian,

> Je pense qu'un bug est mis en évidence dans la simple session
> suivante (le mesage d'erreur du compilateur me semble injustifié):

Bon, nous allons regarder ça.

> À part ça, j'avais posté récemment un autre rapport de possible bug à
> caml@inria.fr, mais il me semble maintenant que j'aurais dû en fait
> l'adresser à caml-bugs@pauillac.inria.fr, donc, dans le doute, je
> copie ci-après mon premier message --- pardon pour l'éventuelle
> redite.
> Il me semble que le comportement suivant met en évidence une
> bizarrerie lexico-syntaxique:
>
> Objective Caml version 3.01
>
> # module type S = sig val f : [< `A of <m : unit -> unit; ..>] -> unit end;;
> Characters 58-60:
> Syntax error: 'end' expected
> Characters 16-19:
> This 'sig' might be unmatched

Oui, j'ai bien vu ton premier message, mais il n'y a pas grand-chose à
dire: [< et >] sont en effet des tokens (pour les streams), et la
séparation lexer/parser et la règle du longest match font que l'erreur
de syntaxe est ici inévitable.

> Indépendemment de la convention lexicale nécessaire, le résultat
> imprimé du typeur n'est pas syntaxiquement correct (d'où mon mail).

Oui, ça arrive. Bonjour le boulot pour corriger cela...

> D'autre part, je trouve bizarre l'erreur suivante:
>
> # let _ : bool = true;;
> Characters 6-7:
> Syntax error

D'après la grammaire actuelle d'OCaml, les contraintes de types dans
les patterns doivent être parenthésées, i.e. (pat : typ) est un
pattern, mais pas pat : typ. Je ne me souviens plus de la raison de
cette syntaxe. Mais c'est vrai que c'est légèrement bizarre en
comparaison avec

   let id : typ = exp

qui est accepté (via une règle spéciale de parsing).

- Xavier

(0000576)
administrator (administrator)
2001-05-22 05:40

En effet ce message est tout a` fait injustifie', et c'est bien un bug.
Il est maintenant corrige' dans la version CVS (ocaml 3.01+2).

Cordialement,

Jacques Garrigue
(0000577)
administrator (administrator)
2001-05-22 05:41

Fixed in 3.01+2 by JG (2001-05-22)

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


Copyright © 2000 - 2011 MantisBT Group
Powered by Mantis Bugtracker